特定の配列要素を配列から削除するPHP関数はありますか?PHPの配列から値を削除するには?
たとえば、値を持つ配列(A
)と値を削除する必要がある別の配列(B
)があります。
アレイA
の値をアレイB
から削除したいですか?
特定の配列要素を配列から削除するPHP関数はありますか?PHPの配列から値を削除するには?
たとえば、値を持つ配列(A
)と値を削除する必要がある別の配列(B
)があります。
アレイA
の値をアレイB
から削除したいですか?
$new_array = array_diff($arrayB, $arrayA);
$arrayA
にではありません$arrayB
からすべての要素を持つ配列を返します。
連想配列でこれを行うには、array_diff_assoc()
を使用します。
単一の値の使用を削除するには:
unset($array[$key]);
あなたは配列関数と同等のものを行うには、コースループのことができますが、それにはポイントがありません。
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
array_diff関数がこれを行います。
「削除」という言葉の意味によって異なります。
unset()関数を使用して配列からキーを削除することはできますが、再インデックスは行いません。あなたが持っているのであれば、たとえば、:
$a = array(1 => 'one', 2 => 'two', 3 => 'three');
を、あなたは、あなたが配列の順番にインデックスを作成する必要がある場合は、
(1 => 'one', 3 => 'three');
のようなものになってしまいます
unset($a[2]);
を呼び出します未設定の配列を取得してarray_values()に渡すことができます。この配列は、順次配列されたキーを持つ新しい配列を返します。
元のシナリオに戻って、他の人が見ているように、array_diffはあなたの仕事をしますが、インデックスチェックはしません。必要な場合は、代わりにarray_diff_assocを使用してください。
この記事では、アレイから1つの値を削除する方法を探していました(タイトルに記載されています)。ここで削除する値を仮定して単純な方法は、配列にされている。
$list = array('foo', 'bar', 'yay', '\o/');
$toremove = 'foo';
unset($list[array_search($toremove, $list)]);
削除する要素が配列の一部でない場合、これはエラーをスローしますけれども。
別の解決策ではなく、実際に最適化されたパフォーマンスが賢明です:
$list = array('foo', 'bar', 'yay', '\o/');
$toremove = 'foo';
$list = array_flip($list);
unset($list[$toremove]);
$list = array_flip($list);
とにかく、おそらく誰もがここで提案し、より迅速で効率的であるようarray_diff使用して単一の値を持つ配列を作成します。
多分、これは簡単で速い解決策です。配列内の複数の値を削除(設定解除)できる単純な反復です。
// Your array
$list = array("apple", "orange", "strawberry", "lemon", "banana");
// Initilize what to delete
$delete_val = array("orange", "lemon", "banana");
// Search for the array key and unset
foreach($delete_val as $key){
$keyToDelete = array_search($key, $list);
unset($list[$keyToDelete]);
}
私は助けることはできませんが、私は同じことを疑問に思っています – JasonDavis