Mehrdimensonales Array durchsuchen

ThiKool

Erfahrenes Mitglied
Hallo Leute,

ich habe ein Array mit ca. 180 Werten. Mein Array sieht so aus

PHP:
Array
(
    [0] => Array
        (
            [id] => 581820988
            [add] => 0
            [del] => 0
        )

    [1] => Array
        (
            [id] => 592818172
            [add] => 0
            [del] => 0
        )

    [2] => Array
        (
            [id] => 644561672
            [add] => 0
            [del] => 0
        )

Worum es mir geht:
Ich möchte nun herausfinden ob die ID 592818172 irgendwo in dem Array drinn ist.

Ich möchte einfach den kompletten Array nach dieser ID durchsuchen und dann den Wert DEL des entsprechenden Arrays verändern.

Vielen Dank euch schonmal!
 
Puhh das sagt mir leider gar nichts, habe erst kürzlich angefangen, mit Arrays zu arbeiten. Hast du vielleicht ein Beispiel für mich?
 
Klar kann ich dir das in 5 Minuten hier hinschreieben, aber dann lernst du ja nix :P
Also erstmal selber probieren...
 
Ist doch realtiv einfach. Einfach rasch eine Suchfunktion schreiben und schon hat man es
PHP:
$list[] = array('id' => 581820988, 'add' => 0, 'del'=> 0);
$list[] = array('id' => 592818172, 'add' => 0, 'del'=> 0);
$list[] = array('id' => 644561672, 'add' => 0, 'del'=> 0);

$index =array_search_in_subarray($list, 'id', 592818172);
$list[$index]['del'] = 1;

print_r($list);

/**
 * Ermittelt den Key oder Index eines Subarrays anhand eines Items des Subarrys.
 * @param  Array<Array>    $array    2-Dimensionaler Array
 * @param  Variant         $key      Key oder Index des Items aus dem Unterarray das durchsucht werden soll
 * @param  Variant         $value    Suchbegriff
 * @return Variant         Key oder Index des Subarrays
 */
function array_search_in_subarray($array, $key, $value){
    foreach($array as $index => $subArray){
        if($subArray[$key] == $value) return $index;
    }
    throw new Exception("'{$value}' not found in key '{$key}");
}

oder ohne Funktion
PHP:
$list[] = array('id' => 581820988, 'add' => 0, 'del'=> 0);
$list[] = array('id' => 592818172, 'add' => 0, 'del'=> 0);
$list[] = array('id' => 644561672, 'add' => 0, 'del'=> 0);

$searchId = 592818172;

foreach($list as &$subArray){
    if($subArray['id'] == $searchId){
        $subArray['del'] = 1;
    }
}

print_r($list);
 
Wenn du eine Dimension mehr hast brauchst du nicht umbedingt eine verschachtelte foreach Schleife. Hier könnte man dann auch auf eine Rekusive Funktion zurück greifen.

Mfg Splasch
 
Zurück