Maison > développement back-end > Problème PHP > Comment forcer la conversion en tableau indexé en php

Comment forcer la conversion en tableau indexé en php

PHPz
Libérer: 2023-04-26 14:50:31
original
590 Les gens l'ont consulté

En PHP, la négociation de tableaux est une opération très courante. Lorsque nous obtenons des données d'une base de données ou d'une autre source de données, nous obtenons généralement un tableau ou un objet associatif. Cependant, dans certains cas, nous devons le convertir en tableau indexé pour une manipulation facile ou un passage à d'autres fonctions. Cet article explique comment convertir un tableau associatif PHP en tableau indexé.

Tout d’abord, regardons un exemple. Supposons que nous obtenions des données utilisateur de la base de données comme suit :

$users = array(
  array('id' => 1, 'name' => 'John', 'age' => 22),
  array('id' => 2, 'name' => 'Jane', 'age' => 30),
  array('id' => 3, 'name' => 'Bob', 'age' => 25),
);
Copier après la connexion

Il s'agit d'un tableau associatif bidimensionnel contenant trois données utilisateur. Si nous voulons le convertir en un simple tableau indexé unidimensionnel, nous pouvons utiliser la fonction array_values(). array_values() 函数。

$users = array_values($users);
Copier après la connexion

这将返回下面的结果:

array(
  array('id' => 1, 'name' => 'John', 'age' => 22),
  array('id' => 2, 'name' => 'Jane', 'age' => 30),
  array('id' => 3, 'name' => 'Bob', 'age' => 25),
)
Copier après la connexion
Copier après la connexion

这并没有起到我们想要的效果,因为实际上返回的是相同的二维数组。这是因为 array_values() 函数只能转换一维数组,不能递归地处理多维数组。因此,我们需要使用递归函数来实现这一目标。

下面是一个递归函数,将任意深度的关联数组转换为索引数组:

function array_to_index($arr) {
  if (!is_array($arr)) {
    return $arr;
  }
  $new_arr = array();
  foreach ($arr as $key => $value) {
    $new_arr[] = array_to_index($value);
  }
  return $new_arr;
}
Copier après la connexion

这个函数接受一个任意深度的数组作为参数,并返回一个索引数组。

我们可以用这个函数将上面的 $users

$users = array_to_index($users);
Copier après la connexion
Cela renverra le résultat suivant :

array(
  array('id' => 1, 'name' => 'John', 'age' => 22),
  array('id' => 2, 'name' => 'Jane', 'age' => 30),
  array('id' => 3, 'name' => 'Bob', 'age' => 25),
)
Copier après la connexion
Copier après la connexion
Cela n'a pas l'effet souhaité car il renvoie en fait le même tableau 2D. En effet, la fonction array_values() ne peut convertir que des tableaux unidimensionnels et ne peut pas traiter de manière récursive des tableaux multidimensionnels. Nous devons donc utiliser une fonction récursive pour y parvenir.

Voici une fonction récursive qui convertit un tableau associatif de profondeur arbitraire en un tableau indexé :

$user1 = $users[0];
$user2 = $users[1];
$user3 = $users[2];

echo $user1['name']; // 输出 John
echo $user2['age']; // 输出 30
echo $user3['id']; // 输出 3
Copier après la connexion
Cette fonction accepte un tableau de profondeur arbitraire comme paramètre et renvoie un tableau indexé.

Nous pouvons utiliser cette fonction pour convertir le tableau $users ci-dessus en un tableau indexé unidimensionnel :

rrreee

Cela renverra le résultat suivant : 🎜rrreee🎜Cela ne semble pas être différent du résultat précédent, mais c'est en fait un tableau unidimensionnel, puisque chaque élément est un tableau. 🎜🎜Pour accéder aux données d'un seul utilisateur, nous pouvons utiliser des indices : 🎜rrreee🎜C'est une façon de convertir un tableau associatif en un tableau indexé. Il peut être utilisé de manière récursive sur des tableaux de n'importe quelle profondeur sans modifier les clés du tableau. 🎜🎜Bien sûr, ce n'est qu'un exemple simple. Dans le développement réel, nous devrons peut-être convertir d'autres types de tableaux associatifs (tels que des objets) en tableaux indexés, ou devoir traiter davantage le tableau pour répondre à des besoins spécifiques. Cependant, cette fonction récursive fournit un modèle pratique qui peut nous aider à mieux comprendre et manipuler les tableaux 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal