Как вернуть массив в рекурсивную функцию в php - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь обработать рекурсивный массив в 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;

В чем проблема? Может кто-нибудь помочь разобраться? Заранее спасибо.

1 Ответ

0 голосов
/ 25 октября 2019

Наконец-то я нашел решение вернуть значение в виде массива с помощью метода рекурсии. Проверьте код ниже.

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

Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...