dsgsdg206050 2018-06-11 21:58
浏览 86
已采纳

在嵌套的多维数组中查找键值

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 ( )
    ) 
) 

My code looks something like this

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

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";
    }

Please help me

Original array - https://pastebin.com/2Qy5cADF

  • 写回答

2条回答 默认 最新

  • douchungu0859 2018-06-11 22:25
    关注

    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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?