在嵌套多维数组中查找键值 [英] Find Key value in nested Multidimensional Array

查看:53
本文介绍了在嵌套多维数组中查找键值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这样的数组数据

I have an array data like this

    $array = Array ( 
         [abc] => Array ( ) 
         [def] => Array ( )
         [hij] => Array ( ) 
             [media] => Array ( 
                 [video_info] => Array ( ) 
                        [video_variants] => Array ( ) 
                                [1] => Array ( )
                                [2] => Array ( )
    ) 
) 

我的代码看起来像这样

foreach($response->extended_entities->media as $media)
        {
        stuffs
           foreach ($media->video_info->variants as $video) 
               {
               stuffs
               }
        }

我要检查数组中的"video_info键"是否可用

I want to check whether the "video_info Key is available in the array or not

我已经尝试过此功能,但是不起作用

I have tried this function but it doesn't work

function multi_array_key_exists($key, $array) {
    if (array_key_exists($key, $array))
        return true;
    else {
        foreach ($array as $nested) {
            foreach ($nested->media as $multinest) {
        if (is_array($multinest) && multi_array_key_exists($key, $multinest))
                return true;
        }
    }
    }
    return false;
}


 if (multi_array_key_exists('video_info',$response) === false)
    {
        return "failed";
    }

请帮助我

原始数组- https://pastebin.com/2Qy5cADF

推荐答案

这是我编写使用递归迭代器类检查数组键的函数的方法...

Here's my approach at writing a function to check the keys of your array using the Recursive Iterator classes...

function isArrayKeyAnywhere( $array, $searchKey )
{
  foreach( new RecursiveIteratorIterator( new RecursiveArrayIterator( $array ), RecursiveIteratorIterator::SELF_FIRST ) as $iteratorKey => $iteratorValue )
  {
    if( $iteratorKey == $searchKey )
    {
      return true;
    }
  }
  return false;
}

$array = [
  'abc'=>[],
  'def'=>[],
  'hij'=>[
    'media'=>[
      'video_info'=>[
        'video_variants'=>[
          [],
          []
        ]
      ]
    ]
  ]
];

var_dump( isArrayKeyAnywhere( $array, 'video_info' ) ); // true
var_dump( isArrayKeyAnywhere( $array, 'foo_bar' ) ); // false

这篇关于在嵌套多维数组中查找键值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆