Ankündigung

Einklappen
Keine Ankündigung bisher.

Ein Array im andren Array finden. Wie?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • beatart
    hat ein Thema erstellt Ein Array im andren Array finden. Wie?.

    Ein Array im andren Array finden. Wie?

    Guten Tag,

    ich habe ein Problem:

    Beispiel:
    Gegeben:

    PHP-Code:
    $array_1 ([0] => 3, [1] => 5, [3] => 10);
    $array_2 ([0] => 8, [1] => 5, [3] => 13);
    $array_3 ([0] => 3, [1] => 8, [3] => 20);
    $array_4 ([0] => 5, [1] => 2, [3] => 15); 
    Gesucht:

    PHP-Code:
    $suche ([0] => 3, [1] => 8); 
    Also es muss am Ende nur $array_3 gefunden werden.

    Ich iteriere durch 2 for-Schleifen, aber es bringt mir $array_1, $array_2 und $array_3 zusammen (und nicht nur $array_3), denn er prüft zu erst ob es 3 vorkommt und dann ob es 8 vorkommt. Ich brauche, dass es 2 Zahlen (in dem Fall 3 und 8 ) gleichzeitig geprüft bei den Arrays werden. Wie kriege ich das? Bitte um Ihre Hilfe!

  • nikosch
    antwortet
    Zitat von tr0y Beitrag anzeigen

    Einen Kommentar schreiben:


  • tr0y
    antwortet

    Einen Kommentar schreiben:


  • beatart
    antwortet
    PHP-Code:
    print_r $vehicle_array['equipment'] ); 
    Liefert:

    Array1 ([0] => 3 [1] => 4 [2] => 8 )
    Array2 ([0] => 3 [1] => 5 [2] => 7 )
    Array3 ([0] => 2 [1] => 4 [2] => 6 )
    Array4 ([0] => 7 [1] => 8 [2] => 9 )

    PHP-Code:
    print_r $equipments ); 
    Liefert:

    Suche-Array ([0] => 3 [1] => 4)

    Das hat funktioniert:

    PHP-Code:
    foreach ($vehicles as $vehicle_id => $vehicle_array) {
        
    $result array_intersect($vehicle_array['equipment'], $equipments);
        if (
    sizeof($equipments) != sizeof($result)) {
            unset(
    $vehicles[$vehicle_id]);
        }

    Liefert $vehicle_id von Array1. Ich brauchte genau den Array1 zu finden, weil er die Werte von Suche-Array beinhaltet. Und die andre Arrays (2-4) wurden eliminiert.

    Einen Kommentar schreiben:


  • tr0y
    antwortet
    die größe des Arrays ist egal, du willst doch nach inhalte suchen, die können value technisch auf ganz anderen keys liegen und trotzdem übereinstimmen bei array_intersect.

    Einen Kommentar schreiben:


  • beatart
    antwortet
    Zitat von tr0y Beitrag anzeigen
    array_intersect stört sich nicht nach keys, sondern nur nach values.
    Ja, ich habe hier die Code angepasst, weil Code bei mir viel komplexer ist. Aber es klappt und es wurde mit Hilfe von "array_intersect" gelöst. Dann habe ich die Grösse vergliechen, damit es mir den richtigen array ausgibt.

    P.S. eliminieren, entschuldigung für mein Deutsch

    Einen Kommentar schreiben:


  • beatart
    antwortet
    Zitat von jspit Beitrag anzeigen
    Oder wartest du, bis jemand die Lösung für dich hier reinschreibt?
    Natürlich nicht. Lösung kann ich selber schreiben, brauche die Idee.

    Einen Kommentar schreiben:


  • tr0y
    antwortet
    PHP-Code:
    <?php

    $foo 
    = [
        [ 
    => 3=> 5=> 10 ],
        [ 
    => 8=> 5=> 13 ],
        [ 
    => 3=> 8=> 20 ],
        [ 
    => 5=> 2=> 15 ],
    ];

    $search = [ => 3=> ];

    $results array_filter($foo, function(array $in) use ($search) {
        
    // === <- order-sensitive, == <- order-insensitive
        
    return $search === array_intersect_assoc($in$search);
    });

    var_dump(current($results));
    array_intersect stört sich nicht nach keys, sondern nur nach values.

    Einen Kommentar schreiben:


  • beatart
    antwortet
    Gelöst. Danke an Moewe!

    PHP-Code:
    foreach ($arrays as $array) {
        
    $result array_intersect($array$suche);
        if (
    sizeof($suche) == sizeof($result)) {
            echo 
    "<pre>";
            
    print_r $array );
            echo 
    "</pre>";
        }

    Danke an alle!!!

    Einen Kommentar schreiben:


  • monolith
    antwortet
    Zitat von beatart Beitrag anzeigen
    Code wird Dir nichts bringen.
    Mir aber, denn dann könnte ich meinen Beispielcode anpassen. Ich weiß nämlich nicht, wie deine Suchworte vorliegen.
    Zitat von beatart Beitrag anzeigen
    Es geht um Prinzip und ob es überhaupt eine Möglichkeit dafür gibt.
    Natürlich gibt es die, also bitte.
    Zitat von beatart Beitrag anzeigen
    Code habe ich beschrieben.
    Jedoch unzureichend.
    Zitat von jspit Beitrag anzeigen
    wartest du,
    bis jemand die Lösung für dich hier reinschreibt?
    Ja scheint so. Ich habe es versucht aber beim besten Willen, jetzt komme ich auch nicht mehr weiter, unzureichende Informationen ftw!

    Einen Kommentar schreiben:


  • jspit
    antwortet
    Zitat von jspit Beitrag anzeigen
    So, nun wollen wir wenigstens ein Versuch von dir sehen. Oder wartest du,
    bis jemand die Lösung für dich hier reinschreibt?

    Einen Kommentar schreiben:


  • tr0y
    antwortet
    Dann nimm halt die dynamisch generierten Suchwerte und filter via array_filter dein multidimensionales array ?

    Eine Suche ist eine Filterung. Arrays die in einem Array sind filtert man heraus wenn man sie sucht.

    was in aller welt ist "illiminieren" ?

    Einen Kommentar schreiben:


  • beatart
    antwortet
    Habe mir angeschaut. So was in der Art, aber diese 4 array-funktionen helfen mir nicht weiter. Habe sie gerade ausprobiert, sie eliminieren die Werte und liefern mir die Arrays ohne die Werte was ich suche. Ich brauche, dass es die Arrays eliminiert werden anstatt die Werten davon.

    Einen Kommentar schreiben:


  • beatart
    antwortet
    Zitat von lstegelitz Beitrag anzeigen
    Ok, das war wohl nicht eindeutig, daher nochmal.

    An den TE: Wo ist DEIN Code?
    Code wird Dir nichts bringen. Es geht um Prinzip und ob es überhaupt eine Möglichkeit dafür gibt. Code habe ich beschrieben. Das klappt nicht, weil liefert kein gewünschtes Ergebnis.

    Einen Kommentar schreiben:


  • beatart
    antwortet
    Zitat von monolith Beitrag anzeigen

    Dennoch ist mir immer noch nicht klar wo du nicht weiter kommst, das Grundgerüst ist doch dann sowas (nur in schöner, haha):
    PHP-Code:
    function suche($arrays$suchWert1$suchWert2) {
        
    $gefunden = array();
        foreach (
    $arrays as $array) {
            if (
    $array[0] == $suchWert1 and $array[1] == $suchWert2) {
                
    $gefunden[] = $array;
            }
        }
        return 
    $gefunden;

    Es gibt keine bestimmte Anzahl von Suchwerten. Sie wird auch dynamisch difiniert. Deswegen passt es nicht.

    Einen Kommentar schreiben:

Lädt...
X