Итак, у меня есть два массива
Array ( [0] => test [1] => test 1 [2] => test 2 [3] => test 3 )
а также
Array ( [0] => test [1] => test 1 [2] => test 2 [3] => test 3 )
Я хочу объединить их вместе, чтобы получить массив вроде этого?
Array ( [0] => test test [1] => test 1 test 1 [2] => test 2 test 2 [3] => test 3 test 3 )
Я нашел множество функций, таких как array_merge
и array_combine
но ничего, что делает то, что я хочу сделать.
Есть идеи?
Заранее спасибо.
Максимум
Вы можете сделать это с помощью array_map
:
$combined = array_map(function($a, $b) { return $a . ' ' . $b; }, $a1, $a2));
Вот однострочное решение, если вы используете Php 5.3.0+:
$result = array_map(function ($x, $y) { return $x.$y; }, $array1, $array2);
вы пропустите его, чтобы создать новый массив. Нет встроенной функции. Добро пожаловать в чудесный мир программирования 🙂
подсказки:
вы можете сделать это, как
for($i; $i<count($a); $i++) { $arr[$i] = $a[$i]." ".$b[$i]; }
Просто выполните цикл и назначьте конкатенацию новому массиву:
$array1=array("test","test 1","test 2","test 3"); $array2=array("x","y","z","w"); $new_array=array(); foreach (range(0,count($array1)-1) as $i) { array_push($new_array,$array1[$i] . $array2[$i]); }
Предполагая, что два массива: $ array1 и $ array2
for($x = 0; $x < count($array2); $x++){ $array1[$x] = $array1[$x] . ' ' . $array2[$x]; }
Если у вас есть данные, поступающие из двух разных запросов, и они становятся двумя разными массивами, объединение их не всегда является ответом.
Там, когда они помещаются в массив ([]), они могут быть зациклированы с помощью foreach, чтобы подсчитать, сколько, а затем зациклировано.
Примечание: они должны иметь одинаковую сумму в каждом массиве или один может закончить перед другим … ..
foreach ($monthlytarget as $value) { // find how many results there were $loopnumber++; } echo $loopnumber; for ($i = 0; $i < $loopnumber; $i++) { echo $shop[$i]; echo " - "; echo $monthlytarget[$i]; echo "<br>"; }
Затем отобразится: –
Tescos – 78
Асда – 89
Моррисонс – 23
Sainsburys – 46
Вы можете даже добавить номер счета, чтобы показать этот номер позиции списка.
Для этого нет встроенной функции (я знаю). Используйте цикл:
$combined = array(); for($i = 0, $l = min(count($a1), count($a2)); $i < $l; ++$i) { $combined[$i] = $a1[$i] . $a2[$i]; }
Адаптируйте цикл по своему вкусу: только объедините минимальное количество элементов, объедините пустую строку, если один из массивов короче и т. Д.