PHPでは、 array_filter()は、特定のコールバック関数に基づいて配列の要素をフィルタリングする非常に一般的な関数です。基準を満たさない要素を削除することにより、新しい配列を生成します。 array_filter()は簡潔なツールですが、コードの読みやすさは合理的に使用せずに削減される場合があります。コードの読みやすさを向上させるために、三元演算子を使用して、コールバック関数の書き込みを簡素化できます。
array_filter()関数は、配列とコールバック関数の2つのパラメーターを受け入れます。配列内の各要素を反復し、コールバック関数の戻り値がtrueである要素を保持し、返される値がfalseがフィルタリングされます。
<?php
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$filteredNumbers = array_filter($numbers, function($number) {
return $number % 2 === 0; // 偶数の数のみが保持されます
});
print_r($filteredNumbers);
?>
出力の結果は次のとおりです。
Array
(
[1] => 2
[3] => 4
[5] => 6
[7] => 8
)
三元演算子( ? :)は、ライン内で条件付き判断を下すことができる簡潔な条件付き式です。三元演算子を使用して、 array_filter()のコールバック関数のロジックを簡素化して、より簡潔で読みやすくすることができます。特に、値が単純であるために必要な場合、三元演算子はコードをよりコンパクトにすることができます。
すべての要素を5より大きく保ち、アレイをフィルタリングする必要があるとします。このロジックを3成分演算子を介して実装できます。
<?php
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$filteredNumbers = array_filter($numbers, function($number) {
return $number > 5 ? true : false; // より大きい場合5,戻る true
});
print_r($filteredNumbers);
?>
出力の結果は次のとおりです。
Array
(
[5] => 6
[6] => 7
[7] => 8
[8] => 9
)
この例では、三元演算子? TRUE:FALSEは、数> 5の条件が真であるかどうかを判断するために使用されます。それが本当なら、それは真で返され、それ以外の場合はfalseを返します。 $> 5を返しますが。また、同じ効果を達成することもできます。三元演算子を通じて、より複雑な判断が必要なときにコードを簡潔に保つことができます。
URLを含む配列をフィルタリングする必要があると仮定し、 http://m66.netから始まるURLのみが保持されます。この場合、三元演算子を使用して、判断ロジックを簡素化できます。
<?php
$urls = [
'http://m66.net/page1',
'http://example.com/page2',
'http://m66.net/page3',
'http://anotherdomain.com/page4',
];
$filteredUrls = array_filter($urls, function($url) {
return strpos($url, 'http://m66.net') === 0 ? true : false; // 保持するだけです m66.net 始まり URL
});
print_r($filteredUrls);
?>
出力の結果は次のとおりです。
Array
(
[0] => http://m66.net/page1
[2] => http://m66.net/page3
)
この例では、 strpos($ url、 'http://m66.net')=== 0を使用して、URLがhttp://m66.netで始まるかどうかを判断します。三元演算子は、このロジックを簡潔に処理できることを保証します。
array_filter()を使用する場合、特にコールバック関数の条件判断が単純な場合、3次演算子を紹介することでコードの読みやすさとシンプルさを改善できます。同時に、より複雑な判断を下すときに、コードが簡潔な構造を維持することもできます。