So erstellen Sie ein verschachteltes Array aus einem Array in PHP

Lesezeit: 3 Minuten

So erstellen Sie ein verschachteltes Array aus einem Array in
MrFix

Angenommen, wir haben ein Array: array(1,2,3,4,...)
Und ich möchte es umwandeln in:

array(
    1=>array(
        2=>array(
            3=>array(
                4=>array()
            )
        )
    )
)

Kann jemand helfen?
Danke

BEARBEITEN Es wäre gut, die Lösung mit Iterationen zu haben.

  • Klingt etwas unlogisch. Wofür brauchst du es?

    – Bogdan Burym

    19. Juni 2013 um 10:40 Uhr


  • Q. Wie macht man etwas aus einem Array? EIN. Verwenden Sie eine Schleife.

    – Ihr gesunder Menschenverstand

    19. Juni 2013 um 10:41 Uhr

  • Möchten Sie uns mitteilen, warum Sie dies tun möchten? Es ist auf jeden Fall schwer vorstellbar, dass Sie es brauchen würden.

    – George

    19. Juni 2013 um 10:41 Uhr

  • Ich lerne PHP und möchte mit Arrays üben.

    – MrFix

    19. Juni 2013 um 10:44 Uhr

  • @YourCommonSense oder manchmal noch besser, eine rekursive Funktion..

    – Matsemann

    19. Juni 2013 um 11:10 Uhr

$x = count($array) - 1;
$temp = array();
for($i = $x; $i >= 0; $i--)
{
    $temp = array($array[$i] => $temp);
}

1647865447 906 So erstellen Sie ein verschachteltes Array aus einem Array in
Schwarzes Loch

Sie können einfach eine rekursive Funktion erstellen:

<?php
function nestArray($myArray)
{
    if (empty($myArray))
    {
        return array();
    }

    $firstValue = array_shift($myArray);
    return array($firstValue => nestArray($myArray));
}
?>

  • Ich denke, dies ist die klarste Lösung, kann erkennen, was es tut, indem man es nur ansieht. Im Basisfall sollten Sie wahrscheinlich ein leeres Array zurückgeben.

    – Matsemann

    19. Juni 2013 um 10:58 Uhr


  • Ja, das könnte eine elegante Lösung sein, aber ich brauchte eine iterative. Danke für Ihre Hilfe :). So viele Möglichkeiten, dieselbe Aufgabe zu erfüllen.

    – MrFix

    19. Juni 2013 um 11:05 Uhr

  • @MrFix: Der mentale Prozess, mit dem Sie Ihr Array erstellen können, ist eindeutig rekursiv (wie oft bei verschachtelten Aufgaben), und diese Lösung hat den Vorteil, klar und prägnant zu sein. Wenn dein Ziel ist, zu üben, solltest du besser gleich die guten Gewohnheiten annehmen 🙂 .

    – Schwarzes Loch

    19. Juni 2013 um 11:09 Uhr


  • @Blackhole, ich lerne Schritt für Schritt und ich denke, es wäre gut für mich, auch andere mögliche Lösungen zu lernen. Danke für eure Vorschläge 🙂

    – MrFix

    19. Juni 2013 um 11:15 Uhr

So erstellen Sie ein verschachteltes Array aus einem Array in
Bogdan Burim

Nun, versuchen Sie Folgendes:

$in  = array(1,2,3,4); // Array with incoming params
$res = array();        // Array where we will write result
$t   = &$res;          // Link to first level
foreach ($in as $k) {  // Walk through source array
  if (empty($t[$k])) { // Check if current level has required key
    $t[$k] = array();  // If does not, create empty array there
    $t = &$t[$k];      // And link to it now. So each time it is link to deepest level.
  }
}
unset($t); // Drop link to last (most deep) level
var_dump($res);
die();

Ausgabe:

array(1) {
  [1]=> array(1) {
    [2]=> array(1) {
      [3]=> array(1) {
        [4]=> array(0) {
        }
      }
    } 
  }
} 

Ich denke, die Syntax für das mehrdimensionale Array, das Sie erstellen möchten, würde wie folgt aussehen.

$array = array(

   'array1' => array('value' => 'another_value'), 
   'array2' => array('something', 'something else'),
   'array3' => array('value', 'value')
);

Ist es das, wonach Sie suchen?

1647865448 420 So erstellen Sie ein verschachteltes Array aus einem Array in
Kleinarbeit

Sie können dies auch verwenden Array-Bibliothek um das in nur einer Zeile zu tun:

$array = Arr::setNestedElement([], '1.2.3.4', 'value');

  • … offensichtlich ist dies nicht die Beispieleingabe (nicht, dass es schwierig wäre, sie in den Datentyp des OP zu konvertieren)

    – mickmackusa

    30. März 2021 um 22:40 Uhr

  • … offensichtlich ist dies nicht die Beispieleingabe (nicht, dass es schwierig wäre, sie in den Datentyp des OP zu konvertieren)

    – mickmackusa

    30. März 2021 um 22:40 Uhr

1005380cookie-checkSo erstellen Sie ein verschachteltes Array aus einem Array in PHP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy