将包含数组元素的字符串转换为数组


Convert string containing array elements to array

我有一个字符串,我需要转换成一个数组。这是我在变量中的字符串:

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

然后像这样插入到数组中

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

我试图生成这样的数组:$tree = array($text),但它不起作用。

试试这个

    $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);

这是一个有点渺茫的机会,但它也工作…

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);

用逗号(,)分隔字符串并删除空值索引array_filter可以使用。

$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>';

希望对您有所帮助:-

<?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);
?>

str_replace和explosion的组合可以达到这个目的。

$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>';