Arrays de fusão php

Eu tentei (sem sucesso) mesclar a saída de vários arrays em uma única matriz. Um exemplo do que tentei foi:

$data1 = array("cat", "goat"); $data2 = array("dog", "cow"); print_r(array_merge($data1, $data2)); 

Isso funcionou bem, mas com o código que estou usando abaixo, como posso alcançar a saída desejada que eu procuro?

 $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 "
"; print_r($item); echo "

"; }

Minha saída atual é:

 Array ( [0] => Item one ) Array ( [0] => Item two ) Array ( [0] => Item three ) Array ( [0] => Item four ) 

O resultado desejado seria:

 Array ( [0] => Item one [1] => Item two [2] => Item three [3] => Item four ) 

Obrigado por todas as sugestões avançadas.

   

Pode haver uma maneira melhor, mas isso deve funcionar. Basta transmitir e combinar cada matriz individualmente:

 $items = array(); foreach ($lines as $inner){ $item = array($inner[1]); $items = array_merge($items, $item); } echo "
"; print_r($items); echo "

";

usando array_merge_recursive ::

 $arr1 = array("Item One"); $arr2 = array("Item Two"); print_r(array_merge_recursive($arr1, $arr2)); 

saídas

 Array ( [0] => Item One [1] => Item Two ) 

Você pode adicionar os itens a uma nova matriz sequencialmente para alcançar o resultado desejado:

 : $aResult = array(); foreach ($lines as $inner) { $item = array($inner[1]); $aResult[] = $item; } var_dump($aResult); 

Seu exemplo que funciona é completamente diferente do seu código não operacional. Você nem está usando array_merge nele.

Se você estiver apenas acessando elementos escalares, o seguinte funcionará, mas não usa array_merge :

 $items = array(); foreach ($lines as $inner) { $items[] = $inner[1]; } $items = array_unique($items); echo "
"; print_r($items); echo "

";

Se você estiver interessado em todos os $inner , do que você usaria array_merge :

 $items = array(); foreach ($lines as $inner) { $items = array_merge($items, $inner); } 

modifique seu último loop foreach para se parecer com isto:

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

Isso funcionará bem