Comment créer une fonction qui filtre un tableau à deux dimensions par valeur?
Étant donné le tableau suivant:
Array
(
[0] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => CarEnquiry
[status] => NEW
[appointment] => 0
)
[1] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => CarEnquiry
[status] => CALL1
[appointment] => 0
)
[2] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => Finance
[status] => CALL2
[appointment] => 0
)
[3] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => Partex
[status] => CALL3
[appointment] => 0
)
Comment pourrais-je filtrer le tableau pour afficher uniquement les tableaux qui contiennent une valeur spécifique dans la clé name
? Par exemple name = 'CarEnquiry'
.
La sortie résultante serait:
Array
(
[0] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => CarEnquiry
[status] => NEW
[appointment] => 0
)
[1] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => CarEnquiry
[status] => CALL1
[appointment] => 0
)
)
MODIFIER
J'ai oublié de mentionner que la valeur de recherche doit être interchangeable, c'est-à-dire name = 'CarEnquiry'
ou name = 'Finance'
.
Utilisez la fonction array_filter de PHP avec un rappel.
$new = array_filter($arr, function ($var) {
return ($var['name'] == 'CarEnquiry');
});
Edit: s'il doit être interchangeable, vous pouvez légèrement modifier le code:
$filterBy = 'CarEnquiry'; // or Finance etc.
$new = array_filter($arr, function ($var) use ($filterBy) {
return ($var['name'] == $filterBy);
});
array_filter
est la fonction dont vous avez besoin. http://php.net/manual/en/function.array-filter.php
Donnez-lui une fonction de filtrage comme celle-ci:
function my_filter($elt) {
return $elt['name'] == 'something';
}
<?php
function filter_array($array,$term){
$matches = array();
foreach($array as $a){
if($a['name'] == $term)
$matches[]=$a;
}
return $matches;
}
$new_array = filter_array($your_array,'CarEnquiry');
?>
function multi_array_search_with_condition($array, $condition)
{
$foundItems = array();
foreach($array as $item)
{
$find = TRUE;
foreach($condition as $key => $value)
{
if(isset($item[$key]) && $item[$key] == $value)
{
$find = TRUE;
} else {
$find = FALSE;
}
}
if($find)
{
array_Push($foundItems, $item);
}
}
return $foundItems;
}
Ceci ma fonction peut utiliser à propos de ce problème. Vous pouvez utiliser ;
$ filtré = multi_array_search_with_condition ($ array, array ('name' => 'CarEnquiry')); Vos objets filtrés seront extraits de votre tableau à 2 dimensions