我有5个不同的数组,它们都具有相同的长度(5)但是5个数组中的每一个只有1个值和4个空白数组。如何将5个数组合并为1,排除空单元格:
Array
(
[0] =>
[1] => 5.0
[2] =>
[3] =>
[4] =>
)
Array
(
[0] => SC28
[1] =>
[2] =>
[3] =>
[4] =>
)
Array
(
[0] =>
[1] =>
[2] =>
[3] => Intel(R) Xeon(R) CPU E5345 @ 2.33GHz
[4] =>
)
Array
(
[0] =>
[1] =>
[2] => 1999
[3] =>
[4] =>
)
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] => VMWare
)
组合成一个数组,如下所示:
Array
(
[0] => SC28
[1] => 5.0
[2] => 1999
[3] => Intel(R) Xeon(R) CPU E5345 @ 2.33GHz
[4] => VMWare
)
答案 0 :(得分:2)
您可以使用array_merge
(或array_replace
}和array_filter
:
<?php
$array1 = array('Hello', null, 'world', '');
$array2 = array(0, 0, 'Saluton', '', 'mondo');
$array3 = array();
$total = array_filter(array_merge(
$array1, $array2, $array3)
);
print_r($total);
的产率:
Array
(
[0] => Hello
[2] => world
[6] => Saluton
[8] => mondo
)
请注意,数组已重新编号,并且所有值等效于false (即null,空字符串,零,布尔值false)已被清除。
如果您想保留一些值,则需要传递给仅在您提供的情况下返回array_filter
的{{1}} a suitable callback。
如果您想完全一起滑动数组,您可以使用false
并过滤单独数组。
array_replace
这将产生:
print_r(array_replace(
array_filter(array( null, '5.0', null, null, null)),
array_filter(array( 'SC28', null, null, null, null)),
array_filter(array( null, null, null, 'Xeon', null))
));
使用Array
(
[1] => 5.0
[0] => SC28
[3] => Xeon
)
:
ksort
请注意,缺少的键仍然缺失(如果提供所有阵列,您将获得所需的结果)。但请注意,使用第二种方法,如果两个数组中的两个键具有相同值,则后者将覆盖前一个。