【问题标题】:php array_column with unsequential index returns wrong index具有不连续索引的 php array_column 返回错误的索引
【发布时间】:2016-09-13 04:36:58
【问题描述】:

所以我在 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_column 将转储这些子集而不是返回 NULL)。

标签: php arrays search


【解决方案1】:

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

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

编辑

替代方案,这可能会暂时占用更多内存(除非您不介意修改原始数组),但总体上可能会更快一些(取决于您的数据):

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

【讨论】:

  • 这是一种可能的解决方法,但我想开销会更多,可能值得做一个简单的循环。
猜你喜欢
  • 1970-01-01
  • 2016-03-15
  • 2013-09-24
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多