Logo SNS - Web et Informatique

SNS - Web et Informatique

Lundi 27 Juin 2022
06 25 23 34 56
12150, Sévérac-le-Château
 08h00/23h00 - 7j/7
Être rappelé

  Création de site web professionnel : Offre exclusive à 580 € t.t.c.    Consultez notre démonstration  

PHP - Find a value/key in an array of nested arrays - Trouver une valeur / une clé dans un tableau de tableaux imbriqués

PHP - Find a value or a key in an array of nested arrays - Trouver une valeur ou une clé dans un tableau de tableaux imbriqués

Publié le .

[English]
It can be convenient to test if a value already belongs to an array among other nested arrays.
To do this, we would be tempted to loop through all our arrays and find the value we are looking for, if it exists.
One way to do this is to use PHP's native in_array() function, but it doesn't work on nested arrays... We will then give it as a search array an array sorted by the native array_column() function.
We can search if a value belongs to a set of nested arrays.
We can also retrieve the key of the array to which this value belongs, this is interesting to update a value in an array without looping through all the nested arrays.

[Français]
Il peut être pratique de tester si une valeur appartient déjà à un tableau parmi d'autres tableaux imbriqués.
Pour faire cela, nous serions tentés de faire une boucle parmi tous nos tableaux et de trouver la valeur recherchée, si elle existe.
Un moyen de faire cela est d'employer la fonction native in_array() de PHP or elle ne fonctionne pas sur des tableaux imbriqués ... Nous lui donnerons alors comme tableau de recherche un tableau trié par la fonction native array_column().
Nous pouvons rechercher si une valeur appartient à un ensemble de tableaux imbriqués.
Nous pouvons aussi récupérer la clé du tableau à qui appartient cette valeur, ceci est intéressant pour mettre à jour une valeur dans un tableau sans boucler à travers tous les tableaux imbriqués.


<?php

// make nested arrays
$ARRAYS[] = array(
'article_id' => 15,
'title' => 'Article 1',
'nb_visits' => 1
);
$ARRAYS[] = array(
'article_id' => 16,
'title' => 'Article 2',
'nb_visits' => 1
);
$ARRAYS[] = array(
'article_id' => 18,
'title' => 'Article 3',
'nb_visits' => 1
);

// test - Modify number of id for render test
$article_id = 15;

if( !in_array( $article_id, array_column( $ARRAYS, 'article_id' ) ) ){

echo 'Artcile id : '.$article_id.' is not on array';
}
else{
echo 'Artcile id : '.$article_id.' is on array';

$key = array_search( $article_id, array_column( $ARRAYS, 'article_id' ) );

print_r("\r\n".'His index array is : '.$key);
}

// output :
// Artcile id : 15 is on array
// His index array is : 0

// if we modifiy article id : ex. $article_id = 14;
// output :
// Artcile id : 14 is not on array