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