如何return递归函数中的数组php
How to return the array in recursive function in php
我正在尝试处理 PHP 中的递归数组。但我的代码运行良好。问题是我无法将结果存储在一个数组中 return.
查看代码:
function array_recursion(array $myarray, array $searchterms){
//empty array
$tempArr = array();
//loop through $myarray
foreach ($myarray as $key => $value){
if (is_array($value)){
array_recursion($value, $searchterms);
}
else if (in_array($key, $searchterms)){
print str_replace("0:", "", ($key . ": " . $value . "\n"));
}
}
}
//Call the function
$finalValue = array_recursion($arr, Array('VCHKEY','VOUCHERTYPENAME','VOUCHERNUMBER','PARTYNAME','NARRATION','REFERENCE','AMOUNT','VCHTYPE'));
//but this should print empty array
print_r($finalValue);die();
我想在上面的函数中使用下面两行
$tempArr[] = str_replace("0:", "", ($key . ": " . $value . "\n"));
return $tempArr;
实际问题是什么?任何人都可以帮忙弄清楚吗?提前致谢。
最后我找到了 return 使用递归 method.Check 将值作为数组的解决方案 method.Check 下面的代码。
function array_value_recursive(array $key, array $arr){
$val = array();
array_walk_recursive($arr, function($va, $ke) use($key, &$val){
if(in_array($ke,$key))
array_push($val, $va);
});
return count($val) > 1 ? $val : array_pop($val);
}
希望这对某人有所帮助。
我正在尝试处理 PHP 中的递归数组。但我的代码运行良好。问题是我无法将结果存储在一个数组中 return.
查看代码:
function array_recursion(array $myarray, array $searchterms){
//empty array
$tempArr = array();
//loop through $myarray
foreach ($myarray as $key => $value){
if (is_array($value)){
array_recursion($value, $searchterms);
}
else if (in_array($key, $searchterms)){
print str_replace("0:", "", ($key . ": " . $value . "\n"));
}
}
}
//Call the function
$finalValue = array_recursion($arr, Array('VCHKEY','VOUCHERTYPENAME','VOUCHERNUMBER','PARTYNAME','NARRATION','REFERENCE','AMOUNT','VCHTYPE'));
//but this should print empty array
print_r($finalValue);die();
我想在上面的函数中使用下面两行
$tempArr[] = str_replace("0:", "", ($key . ": " . $value . "\n"));
return $tempArr;
实际问题是什么?任何人都可以帮忙弄清楚吗?提前致谢。
最后我找到了 return 使用递归 method.Check 将值作为数组的解决方案 method.Check 下面的代码。
function array_value_recursive(array $key, array $arr){
$val = array();
array_walk_recursive($arr, function($va, $ke) use($key, &$val){
if(in_array($ke,$key))
array_push($val, $va);
});
return count($val) > 1 ? $val : array_pop($val);
}
希望这对某人有所帮助。