我有一个php数组$a
,它输出:-
Array ( [0] => 47 ) Array ( [0] => 47 [1] => 51 )
我如何使其输出如下:-
Array ( [0] => 47 [1] => 51 )
第一个数组被删除。
一个变量中有两个数组
答案 0 :(得分:2)
之所以会得到这样的输出,是因为您在循环内使用了print_r。
我相信您有类似的东西:
$aa = [47, 51];
foreach($aa as $a){
$b[] = $a;
print_r($b);
}
/*Output:
Array
(
[0] => 47
)
Array
(
[0] => 47
[1] => 51
)*/
但是您应该这样做:
$aa = [47, 51];
foreach($aa as $a){
$b[] = $a;
}
print_r($b);
/*Output:
Array
(
[0] => 47
[1] => 51
)
在这里您可以看到区别。
前两个输出来自循环内部,最后一个是循环之后。
即您的代码正确无误,但输出放置错误,因此使您难以相信有两个项的键0和值47。
答案 1 :(得分:1)
在一个变量中包含两个数组-不可能。 如果在输出中看到两个数组,则输出$ a变量两次。
回答“删除第一个数组php”问题,您可以使用array_shift()函数http://php.net/manual/en/function.array-shift.php
array_shift($a);
答案 2 :(得分:0)
来自评论:
@Noman很好,但是如问题所示,两个数组合而为一 变量。
似乎您需要以下解决方案。
假设您有两个不同的数组( $ a 和 $ b ),但是数组中任何元素的值都相同。例如:两个阵列中都存在47。
因此您需要使用 array_merge 将两个数组合并为一个,并添加 array_unique 来过滤出唯一值。
$a = [47];
$b = [47,51];
$merge = array_merge($a,$b); // array(3) { [0]=> int(47) [1]=> int(47) [2]=> int(51) }
$unique = array_unique($merge);
var_dump($unique); // array(2) { [0]=> int(47) [2]=> int(51) }
这将输出唯一值,删除重复值。
注意:此解决方案将从结果中删除所有重复值 数组。
编辑2
$a = [[47], [47, 51]];
function array_flatten($array)
{
if (!is_array($array)) return FALSE;
$result = array();
foreach ($array as $key => $value) {
if (is_array($value))
$result = array_merge($result, array_flatten($value));
else $result[$key] = $value;
}
return $result;
}
echo '<pre>';
print_r(array_unique(array_flatten($a)));
echo '</pre>';
输出
Array([0] => 47 [2] => 51)
See Demo单击“执行代码”