从数组中删除元素并分配给变量

时间:2017-09-11 10:57:24

标签: php arrays

我有这个数组:

$cars = array("Volvo", "BMW", "Toyota");
$cars_without_volvo=unset($cars[0]);

print_r($cars);
print_r($cars_without_volvo);die;

我需要同时使用$cars$cars_without_volvo。以上似乎没有用。

2 个答案:

答案 0 :(得分:3)

您可以将数组复制到$cars_without_volvo并从中取消设置,然后您将拥有两个不同的数组。 unset()不返回任何内容,它用于直接取消设置元素或变量。

这当然假设Volvo 总是 $cars数组中的第一个元素,因为我们取消了第一个元素。

$cars = array("Volvo", "BMW", "Toyota");
$cars_without_volvo = $cars;
unset($cars_without_volvo[0]);

print_r($cars);
print_r($cars_without_volvo);

输出

Array (
    [0] => Volvo
    [1] => BMW
    [2] => Toyota
)
Array (
    [1] => BMW
    [2] => Toyota
)

您还可以使用Volvodemo)动态找到array_search()元素的键,方法是将上面的unset()行替换为下面的一行。< / p>

unset($cars_without_volvo[array_search("Volvo", $cars_without_volvo)]);

使用其他答案中显示的array_shift()很可能是更好的方法 - 如果您要删除的元素是第一个。如果要删除差异索引中的元素而不是第一个或最后一个,使用此方法可能会更容易。

答案 1 :(得分:3)

array_shift()从数组中删除第一个元素,array_pop将其从结尾中删除:

<?php

$cars = array("Volvo", "BMW", "Toyota");
$volvos = array_shift($cars);

var_dump($cars, $volvos);

输出:

array(2) { [0]=> string(3) "BMW" [1]=> string(6) "Toyota" } string(5) "Volvo"

请在此处查看:https://3v4l.org/nZqul 文档:http://php.net/manual/en/function.array-shift.php