2014-11-29 5 views
5
$items = array(
     1 => [ 
      "id" => 5 
     ], 

     3 => [ 
      "id" => 6 
     ], 
     4 => [ 
      "id" => 7 
     ], 
    ); 

    var_dump(array_column($items,"id")); 

ErgebnisPHP array_column - Wie behalte ich die Schlüssel?

array (size=3) 
    0 => int 5 
    1 => int 6 
    2 => int 7 

Aber wie kann ich halte die Schlüssel von $items so kann ich dies unten bekommen?

array (size=3) 
    1 => int 5 
    3 => int 6 
    4 => int 7 

Antwort

2
foreach(key($parameters) as $key) 
{ 
print($key); 
} 

können Sie speichern auch dieses Ergebnis in anderen Variablen, falls gewünscht.

Und beide Tasten zu zeigen und Werte versuchen Sie dies:

foreach ($parameters as $key => $value) { 
echo $key . ' = ' . $value . '<br>'; 
} 
10

Sehen Sie, wenn diese

array_filter(array_combine(array_keys($items), array_column($items, 'id'))); 
+0

Wird diese Arbeit, auch wenn einige der Elemente keine ‚id‘ haben? –

+0

Nein, dies ist kein generischer Code. Es wird für die oben gestellte Frage funktionieren. –

1

Eine weitere Alternative array_map

helfen könnte

$result = array_map(function($item) {return $item['id'];}, $items);

+0

Dies ist eine Lösung für das Beispiel, aber keine gültige Lösung für das Problem. Wenn Sie ein Array mit einem "Subarray" haben, das kein Schlüssel/Wert-Paar mit der Schlüssel-ID enthält, wäre dieses Paar immer noch im Ergebnis, wie bei array_column nicht. – garyee

-1

Für Ihre zu verwenden ist Beispiel mit nur einer Spalte id

array_map('current', $items); 
+0

Dies ist eine Lösung für das Beispiel, aber keine gültige Lösung für das Problem. Wenn Sie ein Array mit einem "Subarray" haben, das kein Schlüssel/Wert-Paar mit der Schlüssel-ID enthält, wäre dieses Paar immer noch im Ergebnis, wie bei array_column nicht. – garyee

4

für die gleiche Lösung suchen und ein paar Tricks kombinieren, habe ich dies:

$userdb=Array 
(
    "test1" => array 
    (
     'uid' => '100', 
     'name' => 'Sandra Shush', 
     'url' => 'urlof100' 
    ), 
    "test2" => array 
    (
     'uid' => '5465', 
     'name' => 'Stefanie Mcmohn', 
     'pic_square' => 'urlof100' 
    ), 
    "test3" => array 
    (
     'uid' => '40489', 
     'name' => 'Michael', 
     'pic_square' => 'urlof40489' 
    ) 
); 

echo $key = array_search(
    40489, 
    array_filter(
     array_combine(
      array_keys($userdb), 
      array_column(
       $userdb, 'uid' 
      ) 
     ) 
    ) 
); 

Ergebnis ist 'test3'.

Arbeiten in Array-Nummern oder benannte Arrays.

1

Ich denke, dies ist der schnellste Weg Tasten ohne Schleifen und Wiederholungen zu halten

array_diff(array_combine(array_keys($items), array_column($items, 'id')), [null])