Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php查找值为具有特定键的数组的键?_Php_Arrays_Array Key - Fatal编程技术网

如何使用php查找值为具有特定键的数组的键?

如何使用php查找值为具有特定键的数组的键?,php,arrays,array-key,Php,Arrays,Array Key,对于具有键值对的简单数组,我们可以使用array\u search()。但是我有一个数组,其中的值可能是字符串或数组,并且需要找到键,其中的值是一个带有特定键的数组 $myArray = array( 0 => string_value, 1 => string_value2, 3 => array( 'config' => array( 'option1' => value1, 'optio

对于具有键值对的简单数组,我们可以使用
array\u search()。但是我有一个数组,其中的值可能是字符串或数组,并且需要找到键,其中的值是一个带有特定键的数组

$myArray = array(
  0 => string_value,
  1 => string_value2,
  3 => array(
         'config' => array(
           'option1' => value1,
           'option2' => value2,
         ),
       ),
  4 => string_value3,
);
我需要找到元素的键,其中子数组有一个键
config
——也就是说,我应该搜索config并返回
3


我不想在数组中循环。如果这是唯一的选择,那也没什么大不了的。但我想知道是否有更优雅的方法来定位该键。

您应该迭代数组中的项并检查循环中每个项的值。检查是否在循环中设置了
$item[“config”]
,返回循环项的索引

$index;
foreach ($myArray as $key => $item){
    if (isset($item["config"]))
        $index = $key;
}
echo $index;

请参阅

中的代码结果使用数组\u过滤器过滤配置中的数组

$o = array_filter($array, function($v){return !empty($v['config']) ? true : false;});
var_dump(array_keys($o));

除了检查每个项目外,没有其他方法。您尝试了什么?如果您已经有了这样做的方法(如迭代所有元素),并且想知道是否有更好的方法,我建议您将您的工作解决方案发布在上。如果
$item['config']
allway是数组,则添加
break
@MagnusEriksson,您可以使用
is\u array()
,但有问题的是,这两种方法都可以使用。您是正确的。我误解了这个问题。他希望
$item
成为一个数组,而不一定是
$item['config']
。这绝对是最优雅的解决方案。