php检查2级多维数组中是否存在值

时间:2017-10-03 09:30:49

标签: php arrays multidimensional-array

我有这个数组:

Array
(
    [01] => Array
        (
            [cat_id] => 15
            [offset] => 4951
        )

    [02] => Array
        (
            [cat_id] => 15
            [offset] => 4251
        )

    [03] => Array
        (
            [cat_id] => 15
            [offset] => 4001
        )

    [04] => Array
        (
            [cat_id] => 15
            [offset] => 4951
        )

    [05] => Array
        (
            [cat_id] => 15
            [offset] => 3301
        )
)

我有使用array_key_exists获取第一级密钥的代码;

if ((array_key_exists("01", $completed_steps))) {
     echo "Found 0!";
}

但我现在想得到cat_id值,我怎么能在2级数组中做到这一点?

4 个答案:

答案 0 :(得分:2)

使用下面的代码,它将找到n级深度的关键并搜索给定的密钥

function multiKeyExists(array $arr, $key) {

    // is in base array?
    if (array_key_exists($key, $arr)) {
        return $arr[$key]['cat_id']; // returned cat_id 
    }

    // check arrays contained in this array
    foreach ($arr as $element) {
        if (is_array($element)) {
            if (multiKeyExists($element, $key)) {
                return $element[$key]['cat_id']; // returned cat_id
            }
        }

    }

    return false;
}

答案 1 :(得分:0)

试试这样:

if ((array_key_exists('cat_id', $completed_steps['01'])) {
   echo $completed_steps['01']['cat_id'];
}

答案 2 :(得分:0)

您可以从索引中获取特定的键值。请参阅以下示例:

$check_key = "01";
if ((array_key_exists($check_key, $completed_steps))) {
     echo "Found 0! value of cat_id  = ".$completed_steps[$check_key]['cat_id'];
} 

答案 3 :(得分:0)

使用以下代码

$final_cat_id_array = array();
$key_to_check = 'cat_id';

$catFunc = function($currentArr) use (&$final_cat_id_array, $key_to_check){
  if(is_array($currentArr) && array_key_exists($key_to_check, $currentArr)){
     $final_cat_id_array[] = $currentArr[$key_to_check];
    }
};

  $arr = array(
     "01" => array("cat_id" => 1, "offset" => true),
     "02" => array("cat_id" => 2, "offset" => false),
     "03" => array("cat_id" => 3, "offset" => true),
  );

 array_walk($arr, $catFunc);

 print_r($final_cat_id_array);

最终$final_cat_id_array将包含所有cat_id