我有一个这样的数组数据
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"; }请帮助我
原始数组- pastebin/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