2 votes

Comment récupérer une liste de tableaux avec une valeur de colonne spécifique ?

Supposons que j'ai un tableau avec ces valeurs :

$arr = [
     ['type' => 'gallery', 'value' => 'foo'],
     ['type' => 'gallery', 'value' => 'foo2'],
     ['type' => 'gallery', 'value' => 'foo3'],
     ['type' => 'featured', 'value' => 'test'],
];

J'ai besoin de trouver tous gallery des occurrences, alors je l'ai fait :

$key = array_search('gallery', array_column($arr, 'type'));
if($arr[$key] !== false)
{
   var_dump($arr[$key]);
}

mais cette impression n'est qu'une seule occurrence :

['type' => 'gallery', 'value' => 'foo3'],

1voto

Vikas Katariya Points 4713
<?php $arr = [
     ['type' => 'gallery', 'value' => 'foo'],
     ['type' => 'gallery', 'value' => 'foo2'],
     ['type' => 'gallery', 'value' => 'foo3'],
     ['type' => 'featured', 'value' => 'test'],
];

$new = array_filter($arr, function ($var) {
    return $var['type'] == 'gallery';
});
echo "<pre>";
print_r($new);

Edit : Si elle doit être interchangeable, vous pouvez modifier légèrement le code :

$filterBy = 'gallery'; // or Finance etc.

$new = array_filter($arr, function ($var) use ($filterBy) {
    return ($var['type'] == $filterBy);
});

sortie

Array
(
    [0] => Array
        (
            [type] => gallery
            [value] => foo
        )

    [1] => Array
        (
            [type] => gallery
            [value] => foo2
        )

    [2] => Array
        (
            [type] => gallery
            [value] => foo3
        )

)

1voto

marvinIsSacul Points 803

C'est un problème de base de filtrage de tableau. Et la solution fournie n'est qu'une des nombreuses solutions possibles.

$arr = [
    ['type' => 'gallery', 'value' => 'foo'],
    ['type' => 'gallery', 'value' => 'foo2'],
    ['type' => 'gallery', 'value' => 'foo3'],
    ['type' => 'featured', 'value' => 'test'],
];

// filter out other types. make sure only 'gallery' types are returned to the new array $arrOnlyGallery.
// You can use a for loop too here.
$arrOnlyGallery = array_filter($arr, function($a) {
   return $a['type'] == 'gallery';
});

// show the array which should only contain 'gallery' types.
var_dump($arrOnlyGallery);

Sortie :

array(3) { [0]=> array(2) { ["type"]=> string(7) "gallery" ["value"]=> string(3) "foo" } 1 \=> array(2) { ["type"]=> string(7) "gallery" ["valeur"]=> string(4) "foo2" } [2]=> array(2) { ["type"]=> string(7) "gallery" ["value"]=> string(4) "foo3" } }

Vous pouvez en savoir plus sur le filtrage des tableaux en PHP aquí .

1voto

bhuvnesh pattnaik Points 1095

Essayez ceci

function getGallery($var)
  {
  return($var['type'] == 'gallery');
  }

  $arr = [
     ['type' => 'gallery', 'value' => 'foo'],
     ['type' => 'gallery', 'value' => 'foo2'],
     ['type' => 'gallery', 'value' => 'foo3'],
     ['type' => 'featured', 'value' => 'test'],
  ];

$filteredArr = array_filter($arr,"getGallery");

1voto

Pooja JaJal Points 205

Vous devez simplement faire array_filter et cela donnera le résultat attendu.

$searchResult =  array_filter($arr, function($v, $k) {
    return $v['type'] == "gallery";
}, ARRAY_FILTER_USE_BOTH);

print_r($searchResult);`

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X