PHPでは、配列は非常に一般的に使用されるデータ構造です。開発プロセス中に、アレイの空の値を削除して配列インデックスを再構築する必要がある状況に遭遇することがよくあります。幸いなことに、PHPはarray_filter()とarray_values()を提供し、このタスクを簡単に達成するのに役立ちます。
array_filter()関数は、配列内の要素をフィルタリングするために使用されます。デフォルトでは、 array_filter()は、 false ( null 、 false 、 0 、 "など)の値で要素を削除します。この関数は、偽ではない元の配列内のすべての要素を含む新しい配列を返します。
サンプルコード:
$array = [1, 0, 2, null, 3, '', 4];
$filteredArray = array_filter($array);
print_r($filteredArray);
出力結果:
Array
(
[0] => 1
[2] => 2
[4] => 3
[6] => 4
)
上記のように、 array_filter()関数は配列のnull値を削除しますが、配列のインデックスを再構築することはなく、返された配列が元の配列のインデックスを保持します。
array_values()関数は、配列内のすべての値の新しい配列を返し、再インデックスします。通常、配列をフィルタリングした後、 array_values()を使用して配列を再インドします。
サンプルコード:
$array = [1, 0, 2, null, 3, '', 4];
$filteredArray = array_filter($array);
$reindexedArray = array_values($filteredArray);
print_r($reindexedArray);
出力結果:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
array_values()を使用すると、配列のインデックスを正常に再構築し、すべてのnull値を削除します。
array_filter()とarray_values()を組み合わせて、Arrayのnull値をフィルタリングして再インドックスにフィルタリングする実用的な関数を作成できます。
function cleanAndReindexArray($array) {
$filtered = array_filter($array); // 空の値をフィルタリングします
return array_values($filtered); // Reindex配列
}
$array = [1, 0, 2, null, 3, '', 4];
$cleanedArray = cleanAndReindexArray($array);
print_r($cleanedArray);
出力結果:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
配列にURLが含まれ、ドメイン名をM66.netに置き換える必要がある場合、 array_map()および正規表現で実行できます。
サンプルコード:
$array = [
'https://example.com/page1',
'http://test.com/page2',
'https://anotherdomain.com/page3'
];
$replacedArray = array_map(function($url) {
return preg_replace('/https?:\/\/([^\/]+)/', 'https://m66.net', $url);
}, $array);
print_r($replacedArray);
出力結果:
Array
(
[0] => https://m66.net/page1
[1] => http://m66.net/page2
[2] => https://m66.net/page3
)
上記の例では、 preg_replace()を使用してURLのドメイン名を置き換え、 M66.netに変更しました。