Heim  >  Artikel  >  Backend-Entwicklung  >  So erzwingen Sie die Konvertierung in ein indiziertes Array in PHP

So erzwingen Sie die Konvertierung in ein indiziertes Array in PHP

PHPz
PHPzOriginal
2023-04-26 14:20:19549Durchsuche

In PHP ist das Aushandeln von Arrays eine sehr häufige Operation. Wenn wir Daten aus einer Datenbank oder einer anderen Datenquelle abrufen, erhalten wir normalerweise ein assoziatives Array oder Objekt. In einigen Fällen müssen wir es jedoch in ein indiziertes Array konvertieren, um es einfacher bearbeiten oder an andere Funktionen übergeben zu können. In diesem Artikel wird erläutert, wie Sie ein assoziatives PHP-Array in ein indiziertes Array umwandeln.

Schauen wir uns zunächst ein Beispiel an. Angenommen, wir erhalten einige Benutzerdaten wie folgt aus der Datenbank:

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

Dies ist ein zweidimensionales assoziatives Array, das drei Benutzerdaten enthält. Wenn wir es in ein einfaches eindimensionales indiziertes Array konvertieren möchten, können wir die Funktion array_values() verwenden. 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);
Dies wird das folgende Ergebnis zurückgeben:

array(
  array('id' => 1, 'name' => 'John', 'age' => 22),
  array('id' => 2, 'name' => 'Jane', 'age' => 30),
  array('id' => 3, 'name' => 'Bob', 'age' => 25),
)
Dies hat nicht den gewünschten Effekt, da es tatsächlich das gleiche 2D-Array zurückgibt. Dies liegt daran, dass die Funktion array_values() nur eindimensionale Arrays konvertieren und mehrdimensionale Arrays nicht rekursiv verarbeiten kann. Daher müssen wir eine rekursive Funktion verwenden, um dies zu erreichen.

Hier ist eine rekursive Funktion, die ein assoziatives Array beliebiger Tiefe in ein indiziertes Array umwandelt:

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

echo $user1['name']; // 输出 John
echo $user2['age']; // 输出 30
echo $user3['id']; // 输出 3
Diese Funktion akzeptiert ein Array beliebiger Tiefe als Parameter und gibt ein indiziertes Array zurück.

Wir können diese Funktion verwenden, um das obige $users-Array in ein eindimensionales indiziertes Array umzuwandeln:

rrreee

Dies wird das folgende Ergebnis zurückgeben: 🎜rrreee🎜Das scheint sich nicht von dem zu unterscheiden vorheriges Ergebnis, aber es ist tatsächlich ein eindimensionales Array, da jedes Element ein Array ist. 🎜🎜Um auf die Daten eines einzelnen Benutzers zuzugreifen, können wir Indizes verwenden: 🎜rrreee🎜Dies ist eine Möglichkeit, ein assoziatives Array in ein indiziertes Array umzuwandeln. Es kann rekursiv auf Arrays beliebiger Tiefe verwendet werden, ohne die Schlüssel im Array zu ändern. 🎜🎜Natürlich ist dies nur ein einfaches Beispiel. In der tatsächlichen Entwicklung müssen wir möglicherweise andere Arten von assoziativen Arrays (z. B. Objekte) in indizierte Arrays konvertieren oder das Array weiter verarbeiten, um bestimmte Anforderungen zu erfüllen. Diese rekursive Funktion bietet jedoch eine praktische Blaupause, die uns helfen kann, PHP-Arrays besser zu verstehen und zu manipulieren. 🎜

Das obige ist der detaillierte Inhalt vonSo erzwingen Sie die Konvertierung in ein indiziertes Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn