带有不连续索引的php数组_列返回错误的索引
我在php中有一个数组,如下所示:带有不连续索引的php数组_列返回错误的索引,php,arrays,search,Php,Arrays,Search,我在php中有一个数组,如下所示: array( 22 => array() 23 => array() 25 => array() ) 我使用搜索数组中的数组列来搜索子数组中的列 $index=array_search('needlehere',array_column(myarray,'columnbeingsearchedhere')) 但是array_列没有使用正确的索引,而是将它们重新索引为0,1,2 是否仍要保留正确的索引?array\u colum
array(
22 => array()
23 => array()
25 => array()
)
我使用搜索数组中的数组列来搜索子数组中的列
$index=array_search('needlehere',array_column(myarray,'columnbeingsearchedhere'))
但是array_列没有使用正确的索引,而是将它们重新索引为0,1,2
是否仍要保留正确的索引?array\u column()不维护索引(尽管它允许您从行中的其他数据列中设置自己的索引),但您可以使用以下方法来处理:
array_combine(
array_keys($myarray),
array_column($myarray,'columnbeingsearchedhere')
);
编辑
或者,这可能会暂时占用更多的内存(除非您不介意修改原始数组),但总体上可能会快一点(取决于您的数据):
array\u column
用于获取公共索引列……如果数组中的某些子集没有指定的列,array\u combine解决方案将不起作用(array\u column将转储这些列,而不是返回NULL).这是一个可能的解决办法,但我想开销会大得多,可能值得做一个简单的循环。
$newArray = $myArray;
array_walk($newArray, function(&$value) use ($columnName) { $value = $value[$columnName]; } );