我有这样的阵列:从数组中删除元素和分配给一个变量
$cars = array("Volvo", "BMW", "Toyota");
$cars_without_volvo=unset($cars[0]);
print_r($cars);
print_r($cars_without_volvo);die;
我需要两个$cars
和$cars_without_volvo
至以后使用。上述似乎没有工作。
我有这样的阵列:从数组中删除元素和分配给一个变量
$cars = array("Volvo", "BMW", "Toyota");
$cars_without_volvo=unset($cars[0]);
print_r($cars);
print_r($cars_without_volvo);die;
我需要两个$cars
和$cars_without_volvo
至以后使用。上述似乎没有工作。
您可以将阵列复制到$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
)
您还可以找到用于动态的Volvo
元素的键,通过使用array_search()
(demo),通过替换上述与下面的一个unset()
线。
unset($cars_without_volvo[array_search("Volvo", $cars_without_volvo)]);
使用array_shift()
如图对方的回答很可能是更好的方法 - 如果你要删除的元素是第一位的。如果要删除差异索引中的元素,请使用此方法可能更容易。
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 Docs here:http://php.net/manual/en/function.array-shift.php
这比复制数组,然后取消设置在第一元件一个较好的方法,我的回答(基于OP上的代码)的使用。 – Qirel
'unset'不返回任何东西。你可能在寻找'array_shift'。 – deceze