2017-12-31 112 views
-1

Ich habe verwirrt, wie man die Tiefe vom Basis-Array macht.Stellen Sie die Array-Tiefe vom Basis-Array her

$array = array('736', '827', '831'); 

Mit foreach-Schleife, möchte ich Endergebnis wie folgt aus:

Array 
(
    [736] => Array 
     (
      [827] => Array 
       (
        [831] => Array 
         (
         ) 

       ) 

     ) 

) 
+0

Hinweis: Rekursion –

+1

Mit welchem ​​Code haben Sie Probleme? Welche Probleme haben Sie mit Ihrem Code? Erhalten Sie eine Fehlermeldung? Was ist die Fehlermeldung? Ist das Ergebnis nicht das Ergebnis, das Sie erwarten? Welches Ergebnis erwarten Sie und warum, welches Ergebnis erhalten Sie und wie unterscheiden sich die beiden? Ist das Verhalten, das Sie beobachten, nicht das gewünschte Verhalten? Was ist das gewünschte Verhalten und warum, was ist das beobachtete Verhalten und auf welche Weise unterscheiden sie sich? Bitte stellen Sie eine [mcve] zur Verfügung. –

+0

Können Sie eine * genaue * Spezifikation angeben, was alles passieren soll, einschließlich aller Regeln, Ausnahmen von diesen Regeln, Eckfälle, Sonderfälle, Grenzfälle und Randfälle? Können Sie Beispieleingaben und -ausgänge bereitstellen, die sowohl im Normalfall als auch in allen Ausnahmen, Eckfällen, Sonderfällen, Grenzfällen und Grenzfällen zeigen, was Sie erwarten? Bitte stellen Sie auch sicher, dass Sie ein [mcve] bereitstellen. –

Antwort

1

Genau wie Sie wollen, dies tun:

array 
(
    736 => array 
     (
      827 => array 
       (
        831 => array 
         (
         ) 

       ) 

     ) 

) 

oder habe ich die Frage falsch verstanden?

ein foreach Verwendung rückwärts:

$arr=array(831,827,736); 
$newref=array(); 
foreach($arr as $el) 
{ 
    $newref=array($el=>$newref); 
} 

für ein Array Umkehren: $ arr = array_reverse ($ arr);

+0

Ich möchte Basis-Array mit Foreach konvertieren. – Opsional

+0

@Optional Sind Sie sicher, dass Sie eine Foreach möchten? Sie können dies tun: $ arr [736] [827] [831] = array(); Um das obige Ergebnis zu erhalten ... –

+0

Aber der Wert wird automatisch generiert, so dass der hier angegebene Wert nur Beispiel ist. – Opsional

0

Möglicherweise nicht die effizienteste, aber so etwas sollte es tun.

function nestedArray($array) { 
    $newArray = []; 
    $pointer = &$newArray; 
    foreach($array as $value) { 
    $pointer[$value] = []; 
    $pointer = &$pointer[$value]; 
    } 

    return $newArray; 
} 

$arr = [736, 827, 831]; 

var_dump(nestedArray($arr)); 
Verwandte Themen