2011-01-30 12 views
0

配列の最初の29個の値を削除する必要があります。私は検索し、これを可能にするPHP関数を組み込んでいないようです。これはどうしたらできますか?PHPの配列から値を削除するには?

+2

与えられた答えに加えて:単一の値を削除するには、 'unset'を使用してください:http://php.net/manual/en/function.unset.php –

答えて

2

あなたがアレイから値を削除するarray_spliceを使用することができます。

array_splice($arr, 0, 29) 

array_spliceがアレイ自体を修正するように配列を基準として渡されます。削除された値の配列を返します。

ここにそれがどのように働くかのための例は次のとおりだけコピーそれを変更することなく、アレイの一部(Pせず)とは反対に

$arr = range(1, 30); 
$removed = array_splice($arr, 0, 29); 
var_dump($arr);  // array(1) { [0]=> int(30) } 
var_dump($removed); // array(29) { [0]=> int(1) … [28]=> int(29) } 

array_slice

$arr = range(1, 30); 
$copied = array_slice($arr, 29); 
var_dump($arr); // array(30) { [0]=> int(1) … [29]=> int(30) } 
var_dump($copied); // array(1) { [0]=> int(30) } 

ここでarray_slice($arr, 29)は、オフセット29から最後まですべてをコピーし、$arrのままにします。このためものの

$arr = array_slice($arr, 29); 

しかし、あなたは、あなたが値を削除したい言ったように、array_spliceではなく、一部をコピーして戻って、このような変数にコピーされた部分を再割り当てのより良い選択であると思われます新しい配列を作成し、最初の29個の値以外のすべてをコピーしてから、その値を$arrに再割り当てします(配列全体を再度コピーする必要があります) 。

+0

これは私に最初の29の値を残して、最初の29を削除して残りの部分を残しておきたいのです。 – Sammy

+0

@Sammy:すでに述べたように、 'array_splice'は渡された配列を変更し、削除された値だけを返します。 – Gumbo

+0

ahhhh私はそれが実際に元の配列を変更するのか分からなかった。配列のスプライスを行い、実際には戻り値を使用せず、スプライス後に最初の29個の値を削除したオリジナルを呼び出すことで、私が望むものを達成することができました。 – Sammy

4
array_splice($array, 0, 29); 

array_spliceは、削除された要素を配列から削除して返します。また

、あなたは元の配列を保持しますが、削除最初の29個の要素で新しい配列を作成したい、array_sliceを使用する場合:

$newArray = array_slice($array, 29); 
+0

これは私に最初の29の値を残すので、最初の29を削除して残りの部分を残しておきたい。 – Sammy

+0

@サミー:あなたはarray_s *** p *** liceを使用しましたか?そして、値を代入していないことを確かめてください( '$ array = array_splice($ array、0、29)'のように間違っているかもしれません。 – NikiC

関連する問題