带有非顺序索引的php array_column返回错误的索引


php array_column with unsequential index returns wrong index

所以我在php中有一个数组,如下所示:

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

我使用search_array中的array_column来搜索子数组中的列。

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

但是array_column没有使用正确的索引,而是将它们重新索引为0,1,2…

有没有办法保持正确的索引?

array_column()不维护索引(尽管它允许您从行中的其他数据列中设置自己的索引),但您可以使用以下方法来处理:

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

编辑

或者,这可能会暂时占用更多的内存(除非你不介意修改原始数组),但总体速度可能会更快(取决于你的数据):

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