【问题标题】:array_search not working in multi dimensional array as expectedarray_search 未按预期在多维数组中工作
【发布时间】:2016-03-02 13:41:26
【问题描述】:

我有以下数组(下面的数组),我正在尝试获取子数组的值的键。

$array = array(
  'USD' => array (
      0 => 1.79,
      1 => 3.58,
      2 => 5.37,
      3 => 7.16,
      4 => 8.95,
    ),
  'CAD' =>  array (
      0 => 2.49,
      1 => 4.98,
      2 => 7.47,
      3 => 9.96,
      4 => 12.45,
    ),
  'EUR' =>  array (
      0 => 1.99,
      1 => 3.98,
      2 => 5.97,
      3 => 7.96,
      4 => 9.95,
    )
);  
$item_to_get = array_search(5.97, $array);

电流输出

false

预期输出 => 父键名

EUR

【问题讨论】:

标签: php arrays


【解决方案1】:

array_search 函数不是递归的,所以你必须遍历数组并在子数组中搜索:

$foundInParent = false;
foreach($array as $parentKey => $subArray) {
  if (array_search(5.97, $subArray)) {
    $foundInParent = $parentKey;
    break;
  }
}

echo $foundInParent;

只需将它包装在一个函数中..

【讨论】:

【解决方案2】:

这不是 array_search() 应该工作的方式 - 请参阅此处:http://php.net/manual/en/function.array-search.php

您可能需要带有自定义回调函数的array_walk()。或者使用foreach() 遍历外部数组,然后在foreach 循环中使用array_search()

无论如何,我建议首先以不同的方式设置数组!

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    相关资源
    最近更新 更多