2016-05-17 6 views
1

So habe ich ein Array in PHP wie folgt aus:php array_column mit unsequential Index gibt falsche Index

array(
    22 => array() 
    23 => array() 
    25 => array() 
) 

Ich verwende array_column in search_array eine Spalte in den Subarrays zu suchen.

$index=array_search('needlehere',array_column(myarray,'columnbeingsearchedhere')) 

Aber die array_column wird die korrekte Indizes nicht verwenden, aber reindexing sie seine 0,1,2 ...

Gibt es trotzdem die richtigen Indizes zu halten?

+0

'array_column' wird verwendet, um die gemeinsamen Indexspalten zu erhalten .... –

+0

array_combine workaround funktioniert nicht, wenn einige der Teilmengen in Ihrem Array nicht die angegebene Spalte haben (array_column speichert diese anstelle von return NULL) . – kwak

Antwort

3

array_column() nicht Indizes halten (obwohl es Ihnen, Ihre eigenen festlegen kann von anderen Datenspalten in der Reihe), aber Sie können, dass so etwas mit handhaben:

array_combine(
    array_keys($myarray), 
    array_column($myarray,'columnbeingsearchedhere') 
); 

EDIT

Alternative, die wahrscheinlich ein bisschen mehr Speicher vorübergehend packt (es sei denn, Sie werden verändert nicht das ursprüngliche Array dagegen), aber vielleicht ein bisschen schneller insgesamt (je nach Daten) sein:

$newArray = $myArray; 
array_walk($newArray, function(&$value) use ($columnName) { $value = $value[$columnName]; }); 
+0

das ist eine mögliche Arbeit um, aber ich denke, der Overhead wäre viel mehr und könnte nur eine einfache Schleife durchmachen. – PixelPaul