#php #arrays
#php #массивы
Вопрос:
Итак, у меня есть два отдельных массива. Один с идентификаторами цели, а другой с именем цели. Оба находятся в хронологическом порядке.
Пример:
$array[1] => Array
(
[0] => 113139803806479652682
[1] => 100276549585470687394
)
и
$array[2] => Array
(
[0] => EDM
[1] => Space
)
Таким образом, в $array [1] [0] в этом — идентификатор для «EDM» (как показано в $array [2]), а затем [1] в $array [1] — идентификатор имени для «Space».
Чего я хочу добиться, так это вывода нового массива, который будет выглядеть следующим образом:
[0] => Array
(
[0] => 113139803806479652682
[1] => EDM
)
[1] => Array
(
[0] => 100276549585470687394
[1] => Space
)
По сути, новый массив, который возвращает многомерный массив с идентификатором и именем в том же массиве, что и взятый из двух отдельных массивов, в которых имена и идентификаторы уже были упорядочены, просто я хочу, чтобы они были сформированы, чтобы они шли вместе.
Я надеюсь, что в этом есть смысл. Я немного новичок в PHP и программировании в целом.
Ответ №1:
$results = [];
foreach($array1 as $key => $value) {
$results[$key] = [$array1[$key],$array2[$key]];
}
Комментарии:
1. Хорошо. Мой массив, с которым я работаю, уже является многомерным массивом. Я в основном хочу объединить результаты [1] и [4] ([1] — идентификаторы, а [4] — имена) в новый многомерный массив, объединяющий идентификаторы и имена в массив друг друга. Если это имеет значение с тех пор.
2. может
$results[$key] = [$array1[$key][1],$array2[$key][4]]
быть? если ваш массив отличается от того, что показано в вопросе, пожалуйста, обновите вопрос.
Ответ №2:
$newarray=array();
foreach($array1 as $k=>$val){
$newarray[$k]['ID'] = $val;
$newarray[$k]['name'] = $array2[$k];
}
Комментарии:
1. О чем этот код? Вы также должны включить brief.
2. Это решение слишком буквально использует простой английский язык OP и не дает желаемого результата. Кроме того, это не отдельные массивы, это два подмассива внутри родительского массива.
Ответ №3:
Возможно, это не самое элегантное решение, но оно сделает свое дело. Вот код:
$arraySum = array();
for($i=0; $i<count($array1); $i ) {
$arraySum[$i][$i] = $array1[$i];
$arraySum[$i][$i 1] = $array2[$i];
}
Комментарии:
1. Вызов
count()
на каждой итерации цикла не является лучшей практикой — его следует кэшировать. Нет$array1
ни$array2
для использования, поэтому этот код не будет работать для опубликованного вопроса.$arraySum
это плохой выбор для имени переменной, поскольку оно не содержит никаких суммированных данных. Все ответы, даже простые, должны быть объяснены исследователям.
Ответ №4:
Вызывая array_map()
null
параметр обратного вызова и оператор splat $array
, чтобы «распаковать его» в виде нескольких одномерных входных массивов, вы можете умело сгенерировать желаемый, переиндексированный выходной массив в краткой однострочной форме.
Код: (Демо)
$array[1] = [
'113139803806479652682',
'100276549585470687394'
];
$array[2] = [
'EDM',
'Space'
];
var_export(array_map(null, ...$array));
Вывод:
array (
0 =>
array (
0 => '113139803806479652682',
1 => 'EDM',
),
1 =>
array (
0 => '100276549585470687394',
1 => 'Space',
),
)