Position actuelle: Accueil> Derniers articles> Comment utiliser array_filter () pour implémenter un filtrage de recherche simple

Comment utiliser array_filter () pour implémenter un filtrage de recherche simple

M66 2025-06-03

Dans PHP, Array_Filter () est une fonction très pratique qui est souvent utilisée pour filtrer les données d'un tableau basé sur certaines conditions. Cet article utilisera un exemple simple pour montrer comment utiliser array_filter () pour implémenter une fonction de recherche et filtrage de base.

Qu'est-ce que Array_Filter () ?

Array_Filter () est une fonction intégrée pour filtrer les éléments dans un tableau. Sa syntaxe est la suivante:

 array_filter(array $array, ?callable $callback = null, int $mode = 0): array

dans:

  • $ Array : le tableau à filtrer;

  • $ rappel : une fonction de rappel utilisée pour déterminer si chaque élément est conservé;

  • MODE $ : Paramètre facultatif pour spécifier si la fonction de rappel reçoit une valeur de clé, un nom de clé ou les deux.

Si la fonction de rappel n'est pas adoptée, array_filter () supprimera les éléments avec une valeur de false (y compris null , false , string vide, 0, etc.).

Exemple de scénario: recherche de produit de recherche

Supposons que nous ayons une liste de produits, chaque produit est un élément de tableau contenant le nom et la catégorie . Nous voulons rechercher des produits avec le mot dans le nom du produit en fonction du mot-clé.

 $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'],
];

Les utilisateurs transmettent des mots clés de recherche via l'URL:

 // Exemple URL:https://m66.net/search.php?keyword=iphone
$keyword = isset($_GET['keyword']) ? strtolower(trim($_GET['keyword'])) : '';

Ensuite, utilisez array_filter () pour rechercher:

 $filteredProducts = array_filter($products, function ($product) use ($keyword) {
    return strpos(strtolower($product['name']), $keyword) !== false;
});

Enfin, nous pouvons sortir la liste des produits filtrés:

 foreach ($filteredProducts as $product) {
    echo "<p>" . htmlspecialchars($product['name']) . " - " . htmlspecialchars($product['category']) . "</p>";
}

Exemple de code complet

 <?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>Résultats de la recherche - m66.net</title>
</head>
<body>
    <h1>Résultats de la recherche</h1>
    <?php if (empty($keyword)): ?>
        <p>Veuillez saisir les mots clés de recherche。</p>
    <?php elseif (empty($filteredProducts)): ?>
        <p>Pas trouvé avec“<?php echo htmlspecialchars($keyword); ?>”Produits connexes。</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>

Résumer

Array_Filter () est une fonction d'outil très puissante en PHP, en particulier adapté à la gestion des tâches de recherche et de filtrage conditionnel du tableau. En combinant des fonctions anonymes et en utilisant la syntaxe, nous pouvons rapidement construire une logique de filtrage flexible et concise. L'exemple de recherche ci-dessus est une petite fonctionnalité pratique qui convient à un simple système de recherche de produit ou d'article.

Si vous développez un module de recherche léger, essayez Array_Filter () , cela peut être mieux que vous ne le pensez!