массивы слияния php

Я пытался (безуспешно) объединить вывод нескольких массивов в один массив. Пример того, что я пробовал:

$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; } 

это нормально работает