PHPでは、 array_filter()は非常に実用的な機能であり、特定の条件に基づいて配列からのデータをフィルタリングするためによく使用されます。この記事では、簡単な例を使用して、 array_filter()を使用して基本的な検索とフィルタリング機能を実装する方法を示します。
array_filter()は、配列内の要素をフィルタリングするための組み込み関数です。その構文は次のとおりです。
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
で:
$配列:フィルタリングする配列。
$ callback :各要素が保持されているかどうかを判断するために使用されるコールバック関数。
$モード:オプションパラメーターコールバック関数がキー値、キー名、またはその両方を受信するかどうかを指定するためのパラメーター。
コールバック関数が渡されない場合、 array_filter()はfalseの値( null 、 false 、vealt string、0などを含む)の要素を削除します。
製品リストがあると仮定します。各製品は、名前とカテゴリを含む配列アイテムです。キーワードに基づいて、製品名に単語を含む製品を検索したいと考えています。
$products = [
['name' => 'iPhone 15', 'category' => 'electronics'],
['name' => 'MacBook Pro', 'category' => 'electronics'],
['name' => 'Espresso Machine', 'category' => 'home appliances'],
['name' => 'Running Shoes', 'category' => 'fashion'],
['name' => 'iPhone Case', 'category' => 'accessories'],
];
ユーザーはURLを介して検索キーワードを渡します。
// 例 URL:https://m66.net/search.php?keyword=iphone
$keyword = isset($_GET['keyword']) ? strtolower(trim($_GET['keyword'])) : '';
次に、 array_filter()を使用して検索します。
$filteredProducts = array_filter($products, function ($product) use ($keyword) {
return strpos(strtolower($product['name']), $keyword) !== false;
});
最後に、フィルタリングされた製品リストを出力できます。
foreach ($filteredProducts as $product) {
echo "<p>" . htmlspecialchars($product['name']) . " - " . htmlspecialchars($product['category']) . "</p>";
}
<?php
// products.php
$products = [
['name' => 'iPhone 15', 'category' => 'electronics'],
['name' => 'MacBook Pro', 'category' => 'electronics'],
['name' => 'Espresso Machine', 'category' => 'home appliances'],
['name' => 'Running Shoes', 'category' => 'fashion'],
['name' => 'iPhone Case', 'category' => 'accessories'],
];
$keyword = isset($_GET['keyword']) ? strtolower(trim($_GET['keyword'])) : '';
$filteredProducts = array_filter($products, function ($product) use ($keyword) {
return strpos(strtolower($product['name']), $keyword) !== false;
});
?>
<!DOCTYPE html>
<html>
<head>
<title>検索結果 - m66.net</title>
</head>
<body>
<h1>検索結果</h1>
<?php if (empty($keyword)): ?>
<p>検索キーワードを入力してください。</p>
<?php elseif (empty($filteredProducts)): ?>
<p>で見つかりません“<?php echo htmlspecialchars($keyword); ?>”関連製品。</p>
<?php else: ?>
<?php foreach ($filteredProducts as $product): ?>
<p><?php echo htmlspecialchars($product['name']); ?> - <?php echo htmlspecialchars($product['category']); ?></p>
<?php endforeach; ?>
<?php endif; ?>
</body>
</html>
array_filter()は、PHPの非常に強力なツール機能であり、特に配列検索と条件付きフィルタリングタスクの処理に適しています。匿名関数を組み合わせて構文を使用することにより、柔軟で簡潔なフィルタリングロジックをすばやく構築できます。上記の検索例は、単純な製品または物品検索システムに適した実用的な小さな機能です。
軽量検索モジュールを開発している場合は、 array_filter()を試してみてください。