如何从函数返回数组值?

时间:2017-11-28 16:34:59

标签: php arrays

我对此功能有一些问题(子阵列内的搜索值):

function searchItemsByKey($arr, $looking_key) {
    $all_values= array ();
    echo "cycling... <br>";
    foreach ($arr as $key => $value)
    {
        if (is_array($arr[$key]))
         searchItemsByKey($arr[$key], $looking_key);
        else   if ($key == $looking_key)
        {
            echo "find value " . $key . " => " . $value  . "<br>";
        array_push ($all_values,$value);
        }
    }
    return $all_values;
}

$myvalues =  searchItemsByKey($array, 'end');
print_r ($myvalues);

myvalues,是数组null。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

替换为

否则if($ value == $ looking_key)

答案 1 :(得分:0)

您最大的问题是,当您搜索子阵列时,您会进行子搜索但忽略结果。所以最多,你只能找到一层深的东西。

该问题的解决方案是,当您查看子数组时,将子搜索的返回值固定为$all_values

function searchItemsByKey($arr, $looking_key)
{
    $all_values= array();
    echo "cycling... <br>";
    foreach ($arr as $key => $value)
    {
        // btw...not much point in `$arr[$key]` here.
        // the `$key => $value` means that the value will be put in $value.
        if (is_array($value))
        {
            array_splice($all_values, count($all_values), 0, array_searchItemsByKey($value, $looking_key);
        }
        else if ($key == $looking_key)
        {
            echo "find value " . $key . " => " . $value  . "<br>";
            array_push ($all_values,$value);
        }
    }
    return $all_values;
}

$myvalues =  searchItemsByKey($array, 'end');
print_r ($myvalues);