Maison  >  Article  >  développement back-end  >  Comment forcer la conversion en tableau indexé en php

Comment forcer la conversion en tableau indexé en php

PHPz
PHPzoriginal
2023-04-26 14:20:19549parcourir

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),
);

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);

这将返回下面的结果:

array(
  array('id' => 1, 'name' => 'John', 'age' => 22),
  array('id' => 2, 'name' => 'Jane', 'age' => 30),
  array('id' => 3, 'name' => 'Bob', 'age' => 25),
)

这并没有起到我们想要的效果,因为实际上返回的是相同的二维数组。这是因为 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;
}

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

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

$users = array_to_index($users);
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),
)
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
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!

Déclaration:
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