2017-09-11 71 views
0

我有这样的阵列:从数组中删除元素和分配给一个变量

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

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

我需要两个$cars$cars_without_volvo至以后使用。上述似乎没有工作。

+0

'unset'不返回任何东西。你可能在寻找'array_shift'。 – deceze

回答

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 
) 

您还可以找到用于动态的Volvo元素的键,通过使用array_search()demo),通过替换上述与下面的一个unset()线。

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

使用array_shift()如图对方的回答很可能是更好的方法 - 如果你要删除的元素是第一位的。如果要删除差异索引中的元素,请使用此方法可能更容易。

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 Docs here:http://php.net/manual/en/function.array-shift.php

+0

这比复制数组,然后取消设置在第一元件一个较好的方法,我的回答(基于OP上的代码)的使用。 – Qirel