Добавление массива к массиву в PHP

#php #arrays #loops #multidimensional-array

#php #массивы #циклы #многомерный массив

Вопрос:

некоторое время использовал php, но не могу понять, что здесь происходит! Я пробовал array_merge() и array_push() на массиве, чтобы иметь возможность добавлять массивы к массиву существующих массивов.

Например, чтобы иметь возможность добавлять x и y в один и тот же массив с помощью цикла:

 $x = [x, y, z];
$y = [a, b, c];

$goal = [[x, y, z], [a,b,c]];
  

Чувствую, что я настолько запутался в этой проблеме, что упускаю что-то действительно очевидное!
Я перепробовал все следующее, но ничего не получилось.

 $intermediate = array([x,y,z];;
$goal = array($goal, $intermediate)

$goal[$i] = $intermediate;

$goal[$i][$j] = $raw[i][j]; // lets say raw is where elements come from
  

Из того, что я видел, это многомерный индексированный массив, но я полностью застрял, поскольку работал с ним часами! Любая помощь приветствуется!

[РЕДАКТИРОВАТЬ] По сути, я пытаюсь запустить Google sheets, и он принимает ввод формы [[$val1], [$val2]] для вставки в два столбца и формы [[$val1, $val2]] для вставки в строку.

У меня есть 2d-массив, где каждый массив будет отдельной строкой, но, похоже, он не работает. Я обновляю $goal до $goal = [$goal, $ intermediates], но, похоже, это не работает — сохраняется только первая строка.

Моя цель — передать содержимое формы, [[$val1,$val2],[$val3,$val4]] но она вставляет только [$val1,$val2] часть.

 $goal = [];
for ($i = 0; $i < count( $info) ; $i  ){
  $value1 = $info[$i][0]; // fname
  $value2 = $info[$i][1]; // lname
  $value3 = $info[$i][2]; // age

  $person =[$value1, $value2, $value3];


  $goal = [$goal, $person];
 
}
  

Я также пробовал использовать версию array () вместо квадратных скобок.

Комментарии:

1. $goal = [$x, $y]; ? Пожалуйста, предоставьте реальный пример ввода / вывода, поскольку я не уверен, чего пытается достичь этот второй фрагмент.

2. @Jeto извините, я был немного расплывчатым, я только что обновил свой вопрос

3. Вы имеете в виду, что я делаю это? 3v4l.org/E4kWK

Ответ №1:

Вы могли бы либо сохранить массив в переменные, либо создать новый массив из обоих :

 $array1 = ['a', 'b', 'c'];
$array2 = ['x', 'y', 'z'];

$outputArray = [$array1, $array2];
  

Или создайте его с помощью [] оператора.

 $outputArray = [];
$outputArray[] = ['a', 'b', 'c'];
$outputArray[] = ['x', 'y', 'z'];
  

Похоже, что он отлично работает в обоих направлениях

РЕДАКТИРОВАТЬ С вашим новым дополнением вы были очень близки. Что вам нужно, так это использовать [] оператор для $goal массива. Этот оператор добавляет другой элемент в массив. В нашем случае мы хотим добавить $person , поскольку это только что созданная строка.

 $goal = [];
for ($i = 0; $i < count($info) ; $i  ){
    
  $value1 = $info[$i][0]; // fname
  $value2 = $info[$i][1]; // lname
  $value3 = $info[$i][2]; // age

  $person =[$value1, $value2, $value3];


  $goal[] = $person;
 
}
  

Вы можете использовать эту игровую площадку для проверки рабочего примера.

Комментарии:

1. Спасибо, это то, что я ищу, но, похоже, это не работает. Я обновил свой вопрос, чтобы он был немного более конкретным : )

2. @NewAppDeveloper Я обновил свой ответ в соответствии с новыми данными, которые вы предоставили. Я надеюсь, что это решит вашу проблему!

Ответ №2:

Просто используйте функцию array_push:

 <?php
$x = ['x', 'y', 'z'];
$y = ['a', 'b', 'c'];

$goal = [];

array_push($goal, $x, $y);

print_r($goal);
  

Здесь вы можете воспроизвести этот PHP-код