2016-05-17 40 views
1

所以我在PHP這樣的數組:PHP array_column與unsequential指數返回錯誤的指數

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

我使用array_column在search_array搜索在子陣列中的一列。

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

但array_column沒有使用正確的指標,但重新索引它們是0,1,2 ......

反正是有保持正確的索引?

+0

'array_column'用於獲取公共索引列.... –

+0

如果數組中的某些子集沒有指定的列,array_combine解決方法將不起作用(array_column將轉儲那些而不是返回NULL) 。 – kwak

回答

3

array_column()不維護索引(雖然它可以讓你設置自己從該行中的其他數據列),但你可以處理,使用類似:

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

編輯

替代,這可能暫時抓起有點更多的內存(除非你不介意原始數組被修改),但可能會有點更快的整體(取決於您的數據):

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

這是一個可能的解決方法,但我認爲開銷會更多,可能只是簡單循環而已。 – PixelPaul