当前位置: 首页 > 知识库问答 >
问题:

在多维数组中查找一个key=>值,但返回父key?[副本]

令狐经武
2023-03-14

我试图循环通过一个数组,并返回一个键和子数组的数组,其中有一个设置键=

比如说...

假设我有

array(0 => array("chicken" => "free"), 1 => array("chicken" => "notfree"));

我想得到数组数组("鸡"=

我有以下...

function search($array, $key, $value) {
    $arrIt = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));

    foreach($arrIt as $sub) {
        $subArray = $arrIt->getSubIterator();
        $subKey = $arrIt->key();
        if(isset($subArray[$key]) && $subArray[$key] === $value) {
            return array("key" => $subKey, "array" => iterator_to_array($subArray));
        }
    }
}

我可以很容易地得到“鸡肉”=


共有3个答案

诸修伟
2023-03-14
    $parent_key_set = null;
    foreach ($parse as $parent_key => $child) {
        if (array_key_exists($key, $child)) {
            $parent_key_set = $parent_key;
            break;
        }
    }
    

返回$parent\u key\u set;

龙德义
2023-03-14

使用foreach的双参数形式,得到一个包含“parent”键的变量:

foreach($arrIt as $parentKey => $sub) {
    ....
    if(isset(...)) {
        return $parentKey;
    }
}
钱和平
2023-03-14

您必须在Foreach循环中设置一个键值,这将是您在数组中当前位置的键。

foreach ($array as $key => $value) {
    //$key here is your 0/1
    foreach ($value as $_key => $_value) {
        //the inner pairs
        //e.g. $_key = 'chicken' & $_value = 'free'
    }
}

您不需要创建一个迭代器,它已经把它放到了一个级别。

 类似资料:
  • 我有下面的代码,当我打印树形图时,我可以清楚地看到键和值对。每个键都有一个值(输出中没有空值)。当我得到第一个键时,它会给我一个键,但当我试图基于该键获取值时,它会返回null。 以下是输出的一部分: 所以我应该得到article04_C9,article08_C12firstKey()(我这样做),但是当我检索与该键关联的值时,它返回null。 下面是我用来填充树映射的代码 这是我用来按值排序的

  • 问题内容: 我有一个类似于下面的多维数组。我试图实现的是一种从数组中查找和获取“ Total”值最高的数组的方法,现在我知道有一个称为的函数,但不适用于像这样的多维数组。 我想做的是创建一个foreach循环并仅使用总数构建一个新数组,然后使用它来找到最大值,这将起作用,唯一的问题是检索与此相关的其余数据最大值。我不确定这也是最有效的方法。 有任何想法吗? 问题答案: 从PHP 5.5开始,您可以

  • randomkey 如果当前数据库是空的,返回空串

  • 问题内容: 我讨厌以下模式: 当嵌套图表示多维结构时,此示例仅会刮擦要编写的额外代码的表面。 我确定某个地方可以避免这种情况,但是我在Google搜索中所做的努力没有任何意义。 有什么建议? 问题答案: 的 和从Java 8 有 它返回映射到键的值,或者插入给定的值;如果没有为键映射任何值,则返回null。 如果您需要懒惰的价值评估,

  • 问题内容: 因此,我尝试将Key转换为字符串,以便可以使用System.out显示它,然后将其转换回Key。我可以使用BASE64Encoder将其转换为字符串,但是在将其转换回时遇到问题。这是我的源代码: 问题答案: 您永远不会使用un-base-64您的字符串。 替换为: 与

  • 问题内容: 有没有一种快速的方法来获取在多维数组中找到键值对的所有子数组?我不能说阵列的深度。 简单示例数组: 当我搜索key = name和value =“ cat 1”时,该函数应返回: 我猜想函数必须是递归的才能深入到最深层次。 问题答案: 码: 输出: 如果效率很重要,则可以编写效率代码,以便所有递归调用将其结果存储在同一临时数组中,而不是将数组合并在一起,如下所示: 这里的关键是通过引用