2011-07-13 5 views
2

を渡すことで、PHPの配列から項目を削除し、私はこの

Array 
(
    [0] => WVSE1P 
    [1] => WVSE1MA 
    [2] => WVSEU1Y 
    [3] => WVSEUP 
) 

のようなPHPの配列を持っているか、私は値を渡すことで、その中の特定のエントリを削除しますか?以下

は、私が試したコードです:

$array = $items; //array is items 

foreach($array as $key => $value) 
{ 

$val= 'WVSE1P'; //item to remove 
if ($value == $val) unset($array[$key]); 

} 

動作するようには思えません。

答えて

7

設定しないと配列インデックスが正しく一致するように、おそらくarray_spliceを使用してください。その配列を反復処理するいくつかの予期しない動作にいくつかの回を引き起こすかもしれないが、この程度

方法は

$val = 'WVSE1P'; 
$items = array_splice($items, array_search($val), 1); 
+0

@ハンス:リンクありがとうございます。 – Jordan

1

設定解除の配列項目を?:します。別の解決策があります:

$flipped = array_flip($array); 
unset($flipped['WVSE1P']); 
$array = array_flip($flipped); 

これはこの場合に有効です。すべての値が配列内で一意であることを確認してください。

3

この方法は、任意のループなしで指定された配列内の任意の値を削除します。例:配列オブジェクトを制御しないループ内に含有されているので

$array = Array("blue", "orange", "red"); 

$array = array_diff($array, array("blue")); // blue will be removed 

//optionally you can realign the elements: 

$array = array_values($array); 

あなたが動作しない可能性が理由です。

+0

最後にarray_values()を実行すると、配列内のキーが失われます。 – Jordan

+0

すべては、値sinを配列に戻し、順番にそれらのインデックスを付けます – 1337XyPhR

+0

しかし、彼がキーを保持する必要がある場合はどうなりますか? '$ array = array_merge($ array)'が良いでしょう。 – Jordan