1. ホーム
  2. php

[解決済み】空の配列要素を削除する

2022-01-24 04:19:29

質問

ユーザーが送信した内容に基づいて、私の配列のいくつかの要素が空文字列になっています。これらの要素を削除する必要があります。私はこれを持っています。

foreach($linksArray as $link)
{
    if($link == '')
    {
        unset($link);
    }
}
print_r($linksArray);

しかし、うまくいきません。 $linksArray は空の要素を持つままです。また、この操作を empty() 関数を使用しても、結果は同じです。

どのように解決するのですか?

文字列の配列を扱うので、単純に array_filter() というように、便利な処理をしてくれます。

print_r(array_filter($linksArray));

覚えておいてください コールバックが提供されない場合 に等しい配列のすべてのエントリは FALSE (参照 ブール型に変換する ) は削除されます。そのため、もし正確な文字列である '0' を使用する場合は、カスタム・コールバックが必要です。

// PHP 7.4 and later
print_r(array_filter($linksArray, fn($value) => !is_null($value) && $value !== ''));

// PHP 5.3 and later
print_r(array_filter($linksArray, function($value) { return !is_null($value) && $value !== ''; }));

// PHP < 5.3
print_r(array_filter($linksArray, create_function('$value', 'return $value !== "";')));


注意:空の要素を削除した後、配列のインデックスを再作成する必要がある場合は、使用してください。 $linksArray = array_values(array_filter($linksArray));