Я пытался (безуспешно) объединить вывод нескольких массивов в один массив. Пример того, что я пробовал:
$data1 = array("cat", "goat"); $data2 = array("dog", "cow"); print_r(array_merge($data1, $data2));
Это сработало хорошо, но с кодом, который я использую ниже, как я могу достичь желаемого результата, который я ищу?
$filename = "item.txt"; $lines = array(); $file = fopen($filename, "r"); while(!feof($file)) { $lines[] = explode("\t", fgets($file)); } fclose ($file); foreach ($lines as $inner){ $item = array($inner[1]); echo "<pre>"; print_r($item); echo "</pre>"; }
Мой текущий выход:
Array ( [0] => Item one ) Array ( [0] => Item two ) Array ( [0] => Item three ) Array ( [0] => Item four )
Желаемый результат:
Array ( [0] => Item one [1] => Item two [2] => Item three [3] => Item four )
Спасибо за любые предложения в продвинутом виде.
Там может быть лучший способ, но это должно сработать. Просто выполните цикл и объедините каждый массив по отдельности:
$items = array(); foreach ($lines as $inner){ $item = array($inner[1]); $items = array_merge($items, $item); } echo "<pre>"; print_r($items); echo "</pre>";
используя array_merge_recursive ::
$arr1 = array("Item One"); $arr2 = array("Item Two"); print_r(array_merge_recursive($arr1, $arr2));
выходы
Array ( [0] => Item One [1] => Item Two )
Вы можете добавить элементы в новый массив последовательно, чтобы достичь желаемого результата:
: $aResult = array(); foreach ($lines as $inner) { $item = array($inner[1]); $aResult[] = $item; } var_dump($aResult);
Ваш пример, который работает, полностью отличается от вашего нерабочего кода. Вы даже не используете array_merge
.
Если вы только получаете доступ к скалярным элементам, будет работать следующее, но не использует array_merge
:
$items = array(); foreach ($lines as $inner) { $items[] = $inner[1]; } $items = array_unique($items); echo "<pre>"; print_r($items); echo "</pre>";
Если вас интересует все $inner
, чем вы бы использовали array_merge
:
$items = array(); foreach ($lines as $inner) { $items = array_merge($items, $inner); }
измените свой последний цикл foreach таким образом:
$output=array(); foreach($lines as $inner){ $output[]=$inner[1]; } header('Content-type: text/plain; charset=utf-8'); print_r($output);
foreach ($lines as $inner) { $items[] = $inner; }
это нормально работает