2017-09-11 10 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 
) 

また、以下のいずれかで上方unset()ラインを置き換えることにより、array_search()demo)を使用して、動的Volvo要素のキーを見つけることができます。他の回答に示すようにarray_shift()を使用して

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

最も可能性の高い、より良いアプローチです - 削除したい要素が最初のものである場合。最初または最後のインデックスと異なるインデックスの要素を削除する場合は、この方法を使用するほうが簡単です。

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

+0

これは、配列をコピーして最初の要素を解除するよりも、(OPコードに基づく)私の答えが使用しているより良いアプローチです。 – Qirel

関連する問題