Array in Array durchsuchen und den Key vom übergeordneten Array ausgeben, wie ?

Array in Array durchsuchen und den Key vom übergeordneten Array ausgeben, wie ?

Hier ein Bespiel:

Array
(
    [0] => Array
        (
            [ID] => 2
            [Name] => lol
            [OnOffID] => 31578
        )

    [1] => Array
        (
            [ID] => 5
            [Name] => lol2
            [OnOffID] => 31579
        )

)

Ich will nach der ID „31578“ suchen und er soll mir dann die 0 ausgeben, wenn ich nach der 31579 suche soll er die 1 ausgeben…

wie mache ich das ?

wenn ich die Frage richtig verstanden habe, so:


<?php

$data = [
            [ 'ID' => 2, 'Name' => 'lol', 'OnOffID' => '31578' ],
            [ 'ID' => 5, 'Name' => 'lol2', 'OnOffID' => '31579' ],
        ];

$searchID = '31579';
for ($index = 0; $index < count($data); $index++) {
    if ($searchID == $data[$index]["OnOffID"]) {
        break;
    }
}
if ($index < count($data)) {
    echo "found index $index
";
} else {
    echo "not found
";
}

oder so:


<?
$array[0]["ID"] ="2";
$array[0]["Name"] ="lol";
$array[0]["OnOffID"] ="31578";
$array[1]["ID"] ="5";
$array[1]["Name"] ="lol2";
$array[1]["OnOffID"] ="31579";

$test = ($array);

print_r($test);

$match = "31578";

foreach ($array as $key => $element) {
    foreach ($element as $secondKey => $secondElement) {
        if ($secondKey == "OnOffID") {
            if ($match === $secondElement) {
                echo "ID: ".$key;
            }
        }
    }
}
?>

Hi fast :wink: aber vielen Dank erstmal dafür !

OnOffID ist nicht immer ! also müsste anderes gelöst werden…

OnOffID kann alles andere auch sein !!!

Deine Antwort verwirrt mich :confused:

Möchtest du vielleicht unter allen Arrayelementen nach dem Wert ‚31578‘ suchen?
Dann vielleicht als Abwandlung von dem Vorschlag von ubittner

foreach ($array as $key => $element) {
    foreach ($element as $secondKey => $secondElement) {
        if ($match === $secondElement) {
            echo "ID: ".$key;
        }
    }
}

Perfekt 10000x Danke :o

Es klappt genau so wie ich es wollte perfekt…

Mögliche Lösungen sind Dir ja schon genannt worden, bei komplexen Multidimensionalen Arrays wird das mit Foreach Schleifen etwas komplex.

Einfacher ist da ein Einzeiler


$key = array_search($searchid, array_column($data, 'OnOffID'));

Wobei hier $key der gesuchte Schlüssel ist, $serachid in dem Fall das nach dem Du suchst (31578), $data ist der Array und dann die Bezeichnung des Keys von dem Wert den Du suchst.

Cool, aber ich weis nicht immer die Bezeichnung des Keys von dem Wert den ich suche, ich kenne nur den Inhalt :banghead: