如何在多维数组中找到某个值的键?

时间:2014-09-24 19:02:00

标签: php multidimensional-array

我需要在多维数组中找到值的键

3 个答案:

答案 0 :(得分:2)

搜索键

因此,如果您知道该值,我猜您正在寻找$ key。然后使用array_search

$array = array(0 => 'value1', 1 => 'value2', 2 => 'value3', 3 => 'red'); 
$key = array_search('value2', $array); // 2

如果是多维数组,请使用此函数:

function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}

在数组中?

如果您想知道数组中是否有值,请使用函数in_array。使用上面的数组:

if (in_array("value1", $array)) {
    echo "value1 is in the array";
}

如果是多维数组,则使用:

function in_multiarray($elem, $array)
{
    $top = sizeof($array) - 1;
    $bottom = 0;
    while($bottom <= $top)
    {
        if($array[$bottom] == $elem)
            return true;
        else 
            if(is_array($array[$bottom]))
                if(in_multiarray($elem, ($array[$bottom])))
                    return true;

        $bottom++;
    }        
    return false;
}

答案 1 :(得分:0)

您不必了解或关心多少维度。 &#34;搜索键&#34;中的多维示例亚当辛克莱尔的一部分答案将抓住阵列的整个地理位置,发现它的形状,忘记它所做的部分并没有产生你想要的东西。

答案 2 :(得分:0)

首先,您可以使用in_array / is_array函数来搜索数组中的值,但是in_array不适用于多维数组,因此在使用多维数组时,最好使用foreach循环搜索某些内容。这是php手册中的一个函数,适用于多维数组,它可以递归工作,因此输入数组的深度无关紧要。

function myInArray($array, $value, $key){
//loop through the array
foreach ($array as $val) {
  //if $val is an array cal myInArray again with $val as array input
  if(is_array($val)){
    if(myInArray($val,$value,$key))
      return true;
  }
  //else check if the given key has $value as value
  else{
    if($array[$key]==$value)
      return true;
  }
}
return false;

}