2016-11-05 7 views
0

Ich habe eine Zeichenfolge, die ich in ein Array konvertieren muss. Dies ist meine Zeichenfolge, die ich in einer Variablen haben:Konvertieren String mit Array-Elementen in Array

$text ='"list_Menu1"=>"root","list_Submenu1"=>"Menu1","list_Submenu2"=>"Menu1","list_Menu2"=>"root",' 

Und ich möchte es in ein Array wie folgt einzufügen:

$tree = array(
    "list_Menu1" => "root", 
    "list_Submenu2" => "list_Menu1", 
    "list_Submenu3" => "list_Menu1", 
    "list_Menu2" => "root",); 

Ich habe versucht, das Array, dies zu tun zu generieren: $tree = array($text), aber es funktioniert nicht. Wie kann ich das machen, ich bin ein wenig verloren.

+0

$ tree = explode ("" $ text) ; explode-Funktion http://php.net/manual/en/function.explode.php –

+0

Sie können eine Sache verwenden str_replace zu ersetzen "=>" mit ":" in Ihrer Zeichenfolge, dann können Sie json_decode() verwenden, um Array zu erhalten from string –

+0

Wie wäre es, wenn Sie das Array selbst erstellen, weil ich es assoziativ sehen kann, zB $ text = []; $ text [] = ['list menu' => $ wert, 'list_sub => $ value] usw. –

Antwort

2

testen

$text ='"list_Menu1"=>"root","list_Submenu1"=>"Menu1","list_Submenu2"=>"Menu1","list_Menu2"=>"root",'; 

    $text = str_replace("=>",":",$text); 
    // trim last coma 
    $text = trim($text,","); 
    $text = "{".$text."}"; 
    $array = json_decode($text,true); 

    var_dump($array); 
+0

Vielen Dank !!!, diesen Code funktioniert super, ist eigentlich die kürzeste und einfachste von allem :) – user2312198

+0

Cool, außer meiner Antwort, wenn es für Sie funktioniert :) –

1

Explode die Zeichenkette durch Komma (,) und um nullwertige Indizes zu entfernen array_filter kann verwendet werden.

$text ='"list_Menu1"=>"root","list_Submenu1"=>"Menu1","list_Submenu2"=>"Menu1","list_Menu2"=>"root",'; 
$tree = array_filter(explode(',', $text)); 

print '<pre>'; 
print_r($tree); 
print '</pre>'; 
+0

Hallo mit diesem Code bekomme ich das, aber der Teil von [0], [1] hilft mir überhaupt nicht Array ( [0] => "list_Menu1" => "root" [1] => "list_Submenu1" => "Menu1" [2] => "list_Submenu2" => "Menu1" [3] => "list_Menu2" => "root") – user2312198

1

hoffe, das hilft: -

<?php 

function str_to_arr($str) { 
    $str = str_replace('"',"",$str); 
    $arr = explode(',',$str); 
    for($i=0;$i<count($arr);$i++) { 
    if($arr[$i]!="") { 
     $tmp_arr = explode('=>',$arr[$i]); 
     $arr2[$tmp_arr[0]] = $tmp_arr[1]; 
    } 
    } 
    return $arr2; 
} 

$text ='"list_Menu1"=>"root","list_Submenu1"=>"Menu1","list_Submenu2"=>"Menu1","list_Menu2"=>"root",'; 
$arr = str_to_arr($text); 
print_r($arr); 

?> 
+0

Hallo Samay, vielen Dank dieser Code funktioniert wirklich gut – user2312198

1

Kombination von str_replace und explodieren wird es tun. Hier ist sie:

$text ='"list_Menu1"=>"root","list_Submenu1"=>"Menu1","list_Submenu2"=>"Menu1","list_Menu2"=>"root"'; 
$new_text = explode(",", str_replace("\"","", $text)); 
$new_arr_ = array(); 
foreach($new_text as $values) { 
    $new_values = explode("=>", $values); 
    $new_arr_[$new_values[0]] = $new_values[1]; 
} 

echo '<pre>'; 
var_dump($new_arr_); 
echo '</pre>'; 
+0

Hallo L. Herrera, dieser Code funktioniert auch vielen Dank für Ihre Hilfe :) – user2312198

2

Es ist ein wenig weit hergeholt, aber es funktioniert auch ..

function objectToArray($d) { 
    if (is_object($d)) { 
     $d = get_object_vars($d); 
    } 

    if (is_array($d)) { 
     return array_map(__FUNCTION__, $d); 
    } 
    else { 
     return $d; 
    } 
}  

$text ='"list_Menu1"=>"root","list_Submenu1"=>"Menu1","list_Submenu2"=>"Menu1","list_Menu2"=>"root",'; 

$text = str_replace("=>",':',$text); 
$text = rtrim($text,","); 
$text = '{'.$text.'}'; 

$text = json_decode($text); 
$text = objectToArray($text); 
print_r($text); 
+0

Das funktioniert auch gut sieht es aus wie user3273700 Antwort, ich sehe das durch Hinzufügen von Parametern Wahr in $ array = json_decode ($ text, true); Sie können es ohne die Verwendung der Funktion tun – user2312198

+0

es funktionierte nicht so .. das ist der Grund, dass ich die Funktion objectToArray enthalten muss .. – Jaimin