4

PHP 配列をトリミングして空のインデックスをすべて削除する方法

Array
(
    [0] => 
    [1] =>
    [2] =>
    [3] =>
    [4] =>
    [5] =>
    [6] =>
    [7] => 4
    [8] => 6
    [9] =>

)

出力は次のようになります

 Array
    (
        [0] => 4
        [1] => 6   
    )
4

3 に答える 3

9

あなたは関数を探してい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)
于 2010-03-10T19:51:44.520 に答える
2

ここで別の方法:

<?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
)
于 2010-03-10T19:56:11.733 に答える
1

私には宿題のように聞こえます。

array_filter関数をご覧になることをお勧めします。それが最も適切なオプションのようです。

于 2010-03-10T19:55:43.390 に答える