【发布时间】:2020-02-20 11:36:55
【问题描述】:
我正在尝试在 PHP 中处理递归数组。但我的代码工作正常。问题是我无法将结果存储在一个数组中并返回。
查看代码:
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;
真正的问题是什么?任何人都可以帮助弄清楚吗?提前致谢。
【问题讨论】:
-
你能举一个小例子说明你传入的
$arr吗? -
你能说明 $finalValue 中应该包含的内容吗?
-
$arr = Array ( [0] => Array ( [0] => Array ( [TALLYREQUEST] => 导入数据) [1] => Array ( [IMPORTDATA] => Array ( [ REQUESTDESC] => Array ([REPORTNAME] => All Masters [STATICVARIABLES] => Array ([SVCURRENTCOMPANY] => Milan)) [REQUESTDATA] => Array ([TALLYMESSAGE] => Array ([0] => Array ([凭证] => 数组 ( [@attributes] => 数组 ( [REMOTEID] => cef6921e-7882-4b3f-8b48-900165ecba3b-00000026 [VCHKEY] => cef6921e-7882-4b3f-8b48-900165ecba3b-000000VCHTYPE:0000004 ] => 销售订单 [ACTION] => 创建 [OBJVIEW] => 发票凭证视图)
-
$finalValue = VCHKEY: cef6921e-7882-4b3f-8b48-900165ecba3b-0000aada:00000040 Array () VCHTYPE: Sales Order Array () hjvb Array () NARRATION: skdbjfhos Array () PARTYNAME: Cash Array ( ) VOUCHERTYPENAME:销售订单。
-
$arr 和 $finalValue 我只给了你一小部分。