PHP合并数组

3

我一直在尝试(未成功地)将多个数组的输出合并为一个数组。我尝试过的一个例子是:

$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
)

非常感谢您提供的任何建议。


你可以将数组展平。在SO上有很多关于如何做到这一点的例子。 - Joe
6个回答

4

使用 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 ) 

2

也许有更好的方法,但这种方法应该可以。只需循环并逐个合并每个数组:

$items = array();

foreach ($lines as $inner){
    $item = array($inner[1]);

    $items = array_merge($items, $item);
}

echo "<pre>";
print_r($items);
echo "</pre>";

2
foreach ($lines as $inner) {
    $items[] =  $inner;
}

这将正常工作。


1
您可以按顺序将项目添加到新数组中,以实现您想要的结果:
:
$aResult = array();
foreach ($lines as $inner) {
    $item = array($inner[1]);
    $aResult[] = $item;
}
var_dump($aResult);

1

你的可运行示例与你的不工作的代码完全不同。你甚至没有在其中使用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);
}

0
请将您上一个foreach循环修改为以下形式:
$output=array();
foreach($lines as $inner){
    $output[]=$inner[1];
}
header('Content-type: text/plain; charset=utf-8');
print_r($output);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接