在多维数组中查找值和键

时间:2011-12-20 13:17:12

标签: php multidimensional-array

我有以下数组:

Array ( 
    [0] => Array ( 
        [word] => 1 
        [question] => php 
        [position] => 11 
    )
    [1] => Array ( 
        [word] => sql 
        [question] => 1 
        [position] => 22 
    ) 
)

我需要找到[position] => 22存在于我的数组中并保留数组路径以供进一步参考。谢谢。

8 个答案:

答案 0 :(得分:3)

解决方案“Ancide”提供的代码示例。

$found = false;

foreach ($array as $array_item) {
    if (isset($array_item['position'] && $array_item['position'] == "22")) {
        $found = true;
        break;
    }
}

答案 1 :(得分:1)

您可以尝试以下代码:

$array = array 
( 
    array ( 
        "word" => 1,
        "question" => php,
        "position" => 11 
    ),
    array ( 
        "word" => sql,
        "question" => 1,
        "position" => 22 
    ) 
);

foreach($array as $item)
{
    foreach($item as $key=>$value)
    {
        if($key=="position" && $value=="22")
        {
           echo "found";
        }
    }
}

答案 2 :(得分:0)

首先使用isset检查密钥是否存在,然后如果密钥存在,请检查该值是否等于比较值。

编辑:我错过了有两个阵列。要解决此问题,请遍历每个数组并在每个周期中进行检查。如果检查结果为肯定,您可以通过查看当前索引来了解它是哪个数组。

答案 3 :(得分:0)

我认为没有其他解决办法可以循环检查阵列是否存在关键“位置”和值“22”

答案 4 :(得分:0)

尝试使用此功能:

function findKey($array, $mykey) {
    if(array_key_exists($mykey, $array))
        return true;

    foreach($array as $key => $value) {
        if(is_array($value))
            return findKey($value, $mykey);
    }

    return false;
}

if(findKey($search_array, 'theKey')) {
    echo "The element is in the array";
} else {
    echo "Not in array";
}

答案 5 :(得分:0)

试试这个:

function exists($array,$fkey,$fval)
{
foreach($array as $items)
{
   foreach($items as $key => $val)
     if($key == $fkey and $val == $fval)return true;
}
return false;
}

示例:

if(exists($your_array,"position",22))echo("found");

答案 6 :(得分:0)

这将解决您的问题:

<?php

foreach ($array as $k => $v) {
    if(isset($v['position']) && $v['position'] == 22) {
    $key = $k;  
    }
}
echo $key;

//$array[$key]['position'] = 22

?>

答案 7 :(得分:0)

function findPath($array, $value) {
    foreach($array as $key => $subArray)  if(subArray['position'] === $value) return $key;
    return false;  // or whatever if not found
}


echo findPath($x, 22);  //  returns 1


$x= Array ( 
    [0] => Array ( 
        [word] => 1 
        [question] => php 
        [position] => 11 
    )
    [1] => Array ( 
        [word] => sql 
        [question] => 1 
        [position] => 22 
    ) 
)