删除第一个数组php

时间:2018-09-16 08:23:12

标签: php arrays

我有一个php数组$a,它输出:-

Array ( [0] => 47 ) Array ( [0] => 47 [1] => 51 )

我如何使其输出如下:-

Array ( [0] => 47 [1] => 51 )

第一个数组被删除。

一个变量中有两个数组

3 个答案:

答案 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
)

在这里您可以看到区别。

前两个输出来自循环内部,最后一个是循环之后。

https://3v4l.org/kln74

即您的代码正确无误,但输出放置错误,因此使您难以相信有两个项的键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单击“执行代码”