2016-05-18 8 views
3

Ich suche nach äquivalenter Funktionalität zu var_export(), die mir erlaubt, PHP-Array in Parsed-Code zu exportieren, aber jede Anweisung sollte in einer separaten Zeile gedruckt werden (so hat jede Zeile ihre eigene unabhängige Struktur).Wie PHP-Array zu exportieren, wo jedes Schlüssel-Wert-Paar in einer separaten Zeile ist?

Derzeit dieser Code:

<?php 
$a = array (1, 2, array ("a", "b", "c")); 
var_export($a); 
?> 

AUSGABE:

array (
    0 => 1, 
    1 => 2, 
    2 => 
    array (
    0 => 'a', 
    1 => 'b', 
    2 => 'c', 
), 
) 

aber ich bin auf der Suche nach Ausgabe in folgendem Format wie:

$foo = array() 
$foo['0'] = 1 
$foo['1'] = 2 
$foo['2'] = array(); 
$foo['2']['0'] = 'a'; 
$foo['2']['1'] = 'b'; 
$foo['2']['2'] = 'c'; 

so Ausführung wird es Ergebnis in demselben ursprünglichen Array.

Das Ziel ist es, sehr große Arrays in einem für Menschen verständlichen Format zu verwalten, so dass Sie einige ausgewählte Objekte einfach durch Kopieren entfernen können. & paste-Methode (wobei jede Zeile den vollständigen Pfad zum Element enthält). Normalerweise, wenn Sie ein sehr großes Array auf dem Bildschirm ablegen, ist das Problem, dass Sie sehr lange nach oben scrollen müssen, um die Eltern der Eltern zu finden, und es ist fast unmöglich herauszufinden, welches Element zu welchem ​​gehört und welchen Pfad es ohne Verschwendung gibt viel Zeit.

Antwort

3

Zur Zeit habe ich found here (veröffentlicht von ravenswd) diese einfache Funktion, die das erreichen kann:

function recursive_print ($varname, $varval) { 
    if (! is_array($varval)): 
    print $varname . ' = ' . var_export($varval, true) . ";<br>\n"; 
    else: 
    print $varname . " = array();<br>\n"; 
    foreach ($varval as $key => $val): 
     recursive_print ($varname . "[" . var_export($key, true) . "]", $val); 
    endforeach; 
    endif; 
} 

Ausgang für recursive_print('$a', $a);:

$a = array(); 
$a[0] = 1; 
$a[1] = 2; 
$a[2] = array(); 
$a[2][0] = 'a'; 
$a[2][1] = 'b'; 
$a[2][2] = 'c'; 
2

Sie für eine einfache Lösung gehen kann mit json_encode wie folgt.

<?php 
$arrayA = array (1, 2, array ("a", "b", "c")); 
$arrayString=json_encode($a); 
$arrayB=json_decode($arrayString); 
?> 

Hier alles, was Sie tun müssen, ist, kodieren das Array in json (die eine Zeichenfolge zurück) mit json_encode. Dann können Sie die resultierende Zeichenfolge an einer beliebigen Stelle speichern.

Wenn Sie diese Zeichenfolge zurückgelesen haben, müssen Sie json_decode aufrufen, um das ursprüngliche PHP-Array zu erhalten.

Ich hoffe, dies ist eine einfache Lösung für das, was Sie erreichen möchten.

1

Versuchen Sie diesen Ansatz:

<?php 
$sweet = array('a' => 'apple', 'b' => 'banana'); 
$fruits = array('sweet' => $sweet, 'sour' => 'lemon'); 

function print_item($item, $key){ 
    echo "$key contains $item\n"; 
} 

array_walk_recursive($fruits, 'print_item'); 
?> 

Das Array rekursive Funktion gehen, gilt unabhängig von Funktion auf alle Elemente in einem Array.

Prost!

-Orallo

Verwandte Themen