В PHP, как добавить значения [2] в основную часть массива, а не в качестве вспомогательного массива? Я пробовал array_push, + concatenator и array_merge, но никто не работает.
Array
(
[0] => 42299.37181713
[1] => Yes
[name] => Bob Smith
[country] => United Kingdom
[2] => Array
(
[0] => Name 1
[1] => Name 2
[2] => Name 3
[3] =>
)
То, что я ищу/нуждаюсь, - это способ добраться до следующего (и я уверен, что есть простой/правильный PHP способ сделать это!):
Array
(
[0] => 42299.37181713
[1] => Yes
[name] => Bob Smith
[country] => United Kingdom
[2] => Name 1
[3] => Name 2
[4] => Name 3
[5] =>
Спасибо за ваши ответы - я опубликовал свое решение в качестве одного из ответов :)
Проблема здесь заключалась в том, что я делал
foreach ($data as $row){
Затем я пытался сделать array_merge в строке $ row или использовать + в $ row, но это значения, а не массивы сами по себе, хотя print_r говорит о своем массиве.
Таким образом, решение состоит в том, чтобы сделать следующее:
foreach ($data as $k=>$row){
$new_row = array_merge($data[$k],$sub_array);
Таким образом, вы фактически объединяете массив, а не значение, заданное из массива.
<?php
$myArray = array(
0 => 42299.371,
1 => "Yes",
"name" => "Bob Smith",
"country" => "United Kingdom",
2 => array(
0 => "Name 1",
1 => "Name 2",
2 => "Name 3"
)
);
$tmp = $myArray[2];
unset($myArray[2]);
$myArray = array_merge($myArray, $tmp);
echo '<pre>';
print_r($myArray);
echo '</pre>';
если вы получаете массивы отдельно, вы можете использовать array_merge:
$a = ['whashington', 'NewYork', 98];
$b = ['fruits', 'clothes', 4];
$a = array_merge($a, $b);
array (size=6)
0 => string 'whashington' (length=11)
1 => string 'NewYork' (length=7)
2 => int 98
3 => string 'fruits' (length=6)
4 => string 'clothes' (length=7)
5 => int 4
Вы можете сделать что-то подобное, чтобы получить желаемый результат,
<?php
$multi_array = array
(
0 => 42299.37181713,
1 => "Yes",
"name" => "Bob Smith",
"country" => "United Kingdom",
2 => array
(
0 => "Name 1",
1 => "Name 2",
2 => "Name 3",
)
);
$tmp = $multi_array[2];
unset($multi_array[2]);
$i = 2;
foreach($tmp as $value){
$multi_array[$i] = $value;
++$i;
}
print_r($multi_array);
?>
Я понимаю, что вы заинтересованы в объединении подматрица в качестве элементов родительского массива.
Вы можете добиться этого:
$tmp_arr = array();
foreach ($data as $k=>$v) {
if (is_array($v)) {
$tmp_arr = array_merge($tmp_arr, $v);
} else {
$tmp_arr[] = $v;
}
}