Maison >développement back-end >tutoriel php >Comment puis-je accéder à des valeurs spécifiques dans un tableau complexe en utilisant une chaîne comme chemin d'index sans compter sur eval() pour des raisons de sécurité ?
Comment accéder aux valeurs d'un tableau en utilisant une chaîne comme chemin d'index
Si vous avez un tableau avec une structure complexe, vous pouvez rencontrer le devez accéder à des valeurs spécifiques à l’aide d’une chaîne représentant le chemin d’accès à cette valeur. L'utilisation de eval() n'est pas recommandée en raison de failles de sécurité potentielles. Au lieu de cela, il est possible de créer une fonction personnalisée capable de gérer cette tâche.
Considérez l'exemple de tableau suivant :
Array ( [0] => Array ( [Data] => Array ( [id] => 1 [title] => Manager [name] => John Smith ) ) [1] => Array ( [Data] => Array ( [id] => 1 [title] => Clerk [name] => ( [first] => Jane [last] => Smith ) ) ) )
Vous pouvez établir une fonction qui prend une chaîne comme chemin d'index et le tableau auquel accéder en entrée :
function($indexPath, $arrayToAccess) { // $indexPath would be something like [0]['Data']['name'] which would return // "Manager" or it could be [1]['Data']['name']['first'] which would return // "Jane" but the amount of array indexes that will be in the index path can // change, so there might be 3 like the first example, or 4 like the second. return $arrayToAccess[$indexPath] // <- obviously won't work }
Pour implémenter la fonctionnalité souhaitée, vous pouvez exploiter la fonction explosive() :
$paths = explode(":", $indexPath); $itens = $myArray; foreach($paths as $ndx){ $itens = $itens[$ndx]; }
Dans cet exemple, $pathStr représente l'entrée chemin de chaîne et $myArray est le tableau auquel vous souhaitez accéder. Ce code parcourt les éléments de $paths, qui sont les sous-chaînes séparées par les deux points (:) dans $indexPath, et met à jour $itens avec la valeur à $ndx dans l'itération $itens actuelle.
En tant que Résultat, $itens contiendra la valeur que vous recherchez dans le tableau, en fonction du chemin de chaîne spécifié. Cette méthode est plus sûre et plus flexible que l'utilisation de eval(), car elle n'implique pas l'exécution dynamique de code PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!