PHP 配列をトリミングして空のインデックスをすべて削除する方法
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] => 4
[8] => 6
[9] =>
)
出力は次のようになります
Array
(
[0] => 4
[1] => 6
)
あなたは関数を探していarray_filter
ます;-)
たとえば、コードのこの部分:
$arr = array(null, 0, null, 0, '', null, '', 4, 6, '', );
$arr_filtered = array_filter($arr);
var_dump($arr_filtered);
次の出力が得られます。
array
7 => int 4
8 => int 6
すべての「偽の」値が削除されていることに注意してください。
より具体的にしたい場合は、独自のフィルタリング関数を指定できます。たとえばnull
、配列から s のみを削除するには、次のように使用できます。
function my_filter($item) {
if ($item === null) {
return false;
}
return true;
}
$arr = array(null, 0, null, 0, '', null, '', 4, 6, '', );
$arr_filtered = array_filter($arr, 'my_filter');
var_dump($arr_filtered);
そして、私は得るでしょう:
array
1 => int 0
3 => int 0
4 => string '' (length=0)
6 => string '' (length=0)
7 => int 4
8 => int 6
9 => string '' (length=0)
ここで別の方法:
<?php
$array = array(
0 => 0,
1 => ,
2 => '',
3 => 4,
4 => 6,
5 => null
);
foreach( $array as $a )
{
if( !empty($a) AND $a != NULL AND $a != 0 ) // NULL, 0
{
$new_array[] = $a;
}
}
print_r( $new_array );
?>
出力は次のようになります。
Array
(
[0] => 4
[1] => 6
)
私には宿題のように聞こえます。
array_filter関数をご覧になることをお勧めします。それが最も適切なオプションのようです。