【问题标题】:PHP Multidimensional Look for key=>value and return key?PHP 多维查找 key=>value 并返回 key?
【发布时间】:2012-03-20 15:58:46
【问题描述】:

我正在尝试搜索多维数组,以便将内容附加到特定元素。我有一个函数可以进行搜索并返回该数组的特定部分,但我需要密钥以便可以进行$array[key] 编辑。

获取数组的函数

function arraySearch($array, $key, $value)
{
    $results = array();
    if (is_array($array))
    {
        if (isset($array[$key]) && $array[$key] == $value)
            $results[] = $array;
        foreach ($array as $subarray)
            $results = array_merge($results, arraySearch($subarray, $key, $value));
    }
    return $results;
}

我真的不知道如何编辑它以从数组中获取密钥。

【问题讨论】:

  • 你传递给那个函数的是什么类型的数组?该函数旨在在嵌套数组上查找匹配的键/值对。如果例如如果在 4 层嵌套下找到匹配项,您希望得到什么作为“关键”?
  • 这只是一个单级数组。所以数组(0 => 数组(这里)...)

标签: php


【解决方案1】:

尝试使用引用“&”

function arraySearch($array, $key, $value)
{
   $results = array();
   if (is_array($array))
   {
       if (isset($array[$key]) && $array[$key] == $value)
           $results[] = &$array;
       foreach ($array as $subarray)
           $results = array_merge($results, arraySearch($subarray, $key, $value));
   }
   return $results;
}

然后您将能够处理每个 $results 条目,就好像它直接在 $array 中一样。

$searchResult = arraySearch($myArray, 'test', 'val');
foreach ($searchResult as &$item) {
  $item['nb']++;
}

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 2018-10-10
    • 2014-10-24
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多