配列で特定の要素を削除
備忘録代わりに書いておきます。
phpで特定の要素を一気に削除するみたいな関数がなかったので、解決策をメモしておきます。
例えば、下みたいな配列から、要素が1の要素を全て一気に削除したい場合。
Array(1,2,3,1,2,1,2)
方法は下みたいな感じで、今回は対応しました。
<?php $array = Array(1,2,3,1,2,1,2) ; print_r($array) ; $result = array_filter( $array , create_function('$val', 'return ($val==1) ? FALSE : $val ; ') ) ; print_r($result) ; ?>
実行結果
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 1 [4] => 2 [5] => 1 [6] => 2 ) Array ( [1] => 2 [2] => 3 [4] => 2 [6] => 2 )
このarray_filter関数は、第2引数のコールバック関数の結果がFALSEだった場合に、$resultにはその値が入らないようになるそうです。
う〜ん。。。でも、他にももっとたくさんのやり方がありそうだな。。。しかも、このやり方だと、配列のインデックスの順番がおかしくなるしな。。。まぁ、もしもインデックスの順番を再構築したい場合は、array_values関数を使えばよいかな。もっとよい方法が見つかったら、追記しよ。