Сокращение не работает правильно, мне нужно добавить исключение / исключение - PullRequest
2 голосов
/ 16 июня 2019

У меня есть такой массив в $ _POST var;но нужно знать, что в некоторых случаях массив является огромным многоуровневым из json:

array (
  'idprocess' => 'f-gen-dato1',
  'idform' => 'f-gen-dato2',
)

ИЛИ:

array (
  array (
    'idprocess1' => 'f-gen-dato1',
    'idform1' => 'f-gen-dato2',
  ),
  array (
    'idprocess2' => 'f-gen-dato1',
    'idform2' => 'f-gen-dato2',
  )
)

я пытаюсь уменьшить;любые массивы с этим:

public function ReduARR($Var) {
        $result = $Var;
        if (is_array($Var)) {
            $result = array_reduce($Var, 'array_merge', array());
        }
        return $result;
    }

, но мне нужно избегать массива, который я вам покажу ... первый или один уровень.и работать только во втором или многоуровневом.

я получаю эту ошибку с одним уровнем:

array_merge(): Argument #2 is not an array

1 Ответ

2 голосов
/ 16 июня 2019

Я предполагаю, что вы хотите объединить или уменьшить некоторые массивы, и вы можете пытаться написать некоторые функции, подобные:

$arr1 = array(
    'idprocess1' => 'f-gen-dato1',
    'idform1' => 'f-gen-dato2',
);

$arr2 = array(
    'idprocess2' => 'f-gen-dato1',
    'idform2' => 'f-gen-dato2',
);

function finalArray($arr1, $arr2)
{
    if (is_array($arr1) && is_array($arr2)) {
        return mergeTwoArrays($arr1, $arr2);
    }
}

function mergeTwoArrays($arr1, $arr2)
{
    return array_merge($arr1, $arr2);
}

var_dump(finalArray($arr1, $arr2));

например.


$arr = array(
    array(
        'idprocess1' => 'f-gen-dato1',
        'idform1' => 'f-gen-dato2',
    ),
    array(
        'idprocess2' => 'f-gen-dato1',
        'idform2' => 'f-gen-dato2',
    ),
);

if (is_array($arr[0]) && is_array($arr[1])) {
    var_dump(array_merge($arr[0], $arr[1]));
}

выход

array(4) {
  ["idprocess1"]=>
  string(11) "f-gen-dato1"
  ["idform1"]=>
  string(11) "f-gen-dato2"
  ["idprocess2"]=>
  string(11) "f-gen-dato1"
  ["idform2"]=>
  string(11) "f-gen-dato2"
}
...