[PHP]配列(array)の0(ゼロ)を全削除するには?

どうも、ちょげ(@chogetarou)です。

配列(array)の0(ゼロ)を全削除する方法を紹介します。

スポンサーリンク

方法

配列(array)の0(ゼロ)を全削除する方法は、2つあります。

array_filter()

ひとつは、array_filterを使う方法です。

まず、array_filter()を呼び出します。

そして、array_filter()の第1引数に対象の配列、第2引数に1つの引数を持つ関数を指定します。

関数で、引数が「0」以外の場合に「true」となる条件式を返します。

//arr=対象の配列
$result = array_filter($numbers, function ($value) {
    return $value !== 0;
});

上記のarray_filter()は、対象の配列から0(ゼロ)を削除した新しい配列(array)を生成します。

使用例

<?php
$numbers = [1, 0, 0, 2, 0, 3, 4, 0, 5, 0, 0];

$result = array_filter($numbers, function ($value) {
    return $value !== 0;
});

print_r($result);
?>
出力:
Array
(
    [0] => 1
    [3] => 2
    [5] => 3
    [6] => 4
    [8] => 5
)

array_diff()

もうひとつは、array_diff()を使う方法です。

まず、array_diff()を呼び出します。

そして、array_diff()の第1引数に対象の配列、第2引数に 「[0]」もしくは「array(0)」を指定します。

//arr=対象の配列
$result = array_diff(arr, [0]);
//[0]と同じ結果になる
$result = array_diff(arr, array(0));

上記のarray_diff()は、対象の配列から0(ゼロ)を削除した新しい配列(array)を生成します。

使用例

<?php
$numbers = [1, 0, 0, 2, 0, 3, 4, 0, 5, 0, 0];

$result = array_diff($numbers, [0]);

print_r($result);
?>
出力:
Array
(
    [0] => 1
    [3] => 2
    [5] => 3
    [6] => 4
    [8] => 5
)

まとめ

配列(array)の0(ゼロ)を全削除する方法は、次の2つです。

  • array_filter()を使う方法
    $result = array_filter($numbers, function ($value) { return $value !== 0; });
  • array_diff()を使う方法
    • $result = array_diff(arr, [0]);
    • $result = array_diff(arr, array(0));

コメント

タイトルとURLをコピーしました