2016-05-20 2 views
1

Пожалуйста, взгляните на мой код ниже.Предупреждение: array_merge(): Аргумент # 2 не является массивом Предупреждение: array_merge(): Аргумент # 1 не является массивом

$referenceTable = array(); 
    $referenceTable['val1'] = array(1, 2); 
    $referenceTable['val2'] = 3; 
    $referenceTable['val3'] = array(4, 5); 

    $testArray = array(); 

    $testArray = array_merge($testArray, $referenceTable['val1']); 
    var_dump($testArray); 
    $testArray = array_merge($testArray, $referenceTable['val2']); 
    var_dump($testArray); 
    $testArray = array_merge($testArray, $referenceTable['val3']); 
    var_dump($testArray); 

Я пытался работать с двумя массивами, как вы можете видеть, и при попытке объединить пустой массив со старыми я получаю предупреждения, как

Warning: array_merge(): Argument #2 is not an array 
Warning: array_merge(): Argument #1 is not an array 

Выходной сигнал, который я получаю

array(2) { [0]=> int(1) [1]=> int(2) } 
NULL 
NULL 

Я не могу исправить эту вещь, помогите оценить.

+0

Но $ сам referenceTable массив –

+0

[http://stackoverflow.com/questions/16245377/array-replace-array-merge-session-array-argument-is-not-an-arr?rq = 1] (http://stackoverflow.com/questions/16245377/array-replace-array-merge-session-array-argument-is-not-an-arr?rq=1) –

+0

array_merge требует, чтобы оба параметра были массивом –

ответ

3

Все аргументы, переданные в array_merge(), должны быть массивами, а $referenceTable['val2'] - это не массив, который является целым числом 3. Вы можете бросить его в массив:

$testArray = array_merge($testArray, (array)$referenceTable['val2']); 
+0

Это сработало отлично .. Спасибо :) –

0

$referenceTable['val2'] является ИНТ не массив, объявите $ referenceTable, как это будет массив:

PHP

$referenceTable['val2'] = [3]; 

, который должен работать.

0

Ломая это вниз

$testArray = array_merge($testArray, $referenceTable['val2']); 

Проблема здесь в том, что

$referenceTable['val2'] = 3; 

3 не является массивом. Установите его в массив, и она работает

$referenceTable['val2'] = array(3); 

Относительно того, почему это не удается

$testArray = array_merge($testArray, $referenceTable['val3']); 

Вы запускали предыдущее заявление, в котором установлен $testArray к NULL, который также не является массивом

+0

Да Спасибо, я получил его на этот раз –

-2

$referenceTable['val2'] не является целым числом. 3.

Вы можете отливать массив или несколько массивов:

$testArray = array_merge($testArray, array($referenceTable['val2']));