array_search无法按预期在多维数组中工作

时间:2015-11-28 15:11:34

标签: php arrays

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

$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);

CURRENT OUTPUT

false

预期输出=>父键名称

EUR

2 个答案:

答案 0 :(得分:2)

array_search函数不是递归的,所以你必须迭代数组并搜索子数组:

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

echo $foundInParent;

将它包装在函数中..

答案 1 :(得分:0)

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

您可能需要array_walk()自定义回调函数。或者使用foreach()迭代外部数组,然后在foreach循环内迭代array_search()

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