【问题标题】:How to return the array in recursive function in php如何在php中以递归函数返回数组
【发布时间】: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 我只给了你一小部分。

标签: php recursion store


【解决方案1】:

最后我找到了使用递归方法将值作为数组返回的解决方案。检查下面的代码。

 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);
  }

希望这会对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多