2016-04-18 8 views
0

Hier ist das Array:Wie ein Wert auszuwählen, basierend auf einem bestimmten Schlüsselwert

Array 
(
[0] (Array 
    (
     [id] => 1 
     [name] => Bag 
     [flag] => 0 
    ) 

[1] => Array 
    (
     [id] => 2 
     [name] => Screen 
     [flag] => 0 
    ) 

[2] => Array 
    (
     [id] => 3 
     [name] => HD 
     [flag] => 0 
    ) 

) 

Was ich bekommen muß, ist der Wert der „Flag“ (3.) Spalte in diesem Array, basierend auf dem Wert der "id" (1.) Spalte in diesem Array.

Ein anderes Beispiel, ID # 2 wäre "Bildschirm". Allerdings bei der Verwendung $items[2]['name'] gibt offensichtlich HD zurück. Irgendwelche Ideen, wohin man von dort geht?

Der aktuelle Code verwendet, um die oben Ausgabe zu erzeugen ist:

$items = array(); 
while ($row = mysqli_fetch_array($flagresult)) { 
$items[] = array($row['id'], 'name' => $row['name'], 'flag' => $row['flag']); 
} 

Dank

+0

Durchlaufen Sie also das Array, testen Sie den ID-Wert jedes Elements, bis Sie das gewünschte Element gefunden haben, und rufen Sie dann die relevanten Werte ab –

+0

Wenn möglich, können Sie die ID beim Erstellen des Arrays auf den Schlüssel verschieben . Dann könnten Sie einfach '$ arr [$ id] ['flag']' eingeben, um darauf zuzugreifen – Mike

+2

warum nicht die IDs als Schlüssel an erster Stelle? Es würde Ihre '$ items [2] ['name']' wie erwartet funktionieren lassen, und viel effizienter sein als Looping oder Suche ... – Pevara

Antwort

5

array_column() Verwenden Sie indizieren kann das Array von id:

$items = array_column($items, null, 'id'); 
echo $items[2]['name']; 
echo $items[2]['flag']; 

Aber warum dies nicht tun, wenn Sie das Array ? Wählen Sie zunächst nur die Felder, die Sie SELECT id, name, flag FROM ... brauchen dann nur mit mysqli_fetch_assoc() ein assoziatives Array holen und die id als Schlüssel verwenden:

while ($row = mysqli_fetch_assoc($flagresult)) { 
    $items[$row['id']] = $row; 
} 
+0

Ich kann nicht glauben, dass PHP eine Funktion dafür hat ... – Mike

1

Sie array_search verwenden können.
Sucht das Array für einen Wert gegeben und gibt den entsprechenden Schlüssel, wenn erfolgreich

$key = array_search(2, array_column($items, 'id'),true); 
echo $items[$key]['name']; 
1

Verwenden Sie die ID Ihres Arrays als Index der Array:

$items = array(); 
while ($row = mysqli_fetch_array($flagresult)) { 
    $items[$row['id']] = array('name' => $row['name'], 'flag' => $row['flag']); 
} 
Verwandte Themen