我有一个字符串:
string(133) "'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'"
我如何创建关联数组? 结果必须是:
array('status' => '-1', 'level1' => '1', ....);
请帮忙。
答案 0 :(得分:3)
最快,最简单但真正的不安全
$str = "array('3'=>'www.tension.com','1'=>'www.seomeuo.com','requestedBy'=>'1')";
eval("\$array = $str;");
你永远不应该使用这种方法,还有另外一种方法:serialize()
和unserialize()
答案 1 :(得分:2)
尝试此代码并使用 explode()和 foreach 循环来获取输出
<?php
$string="'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
$a=explode("=>",$string);
$c=array();
$i=0;
foreach($a as $k=>$v){
if($i%2==0){
$b[]=$v;
}else{
$c[]=$v;
}
$i++;
}
$d=array_combine($b,$c);
print_r($d);
?>
答案 2 :(得分:2)
我想练习正则表达式。一个大问题是,您的字符串同时包含','
和', '
作为分隔符,因此您需要修复它。
<?php
$var = "'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
$var = str_replace(', ', ',', $var);
$rows = explode(',', $var);
$array = [];
foreach($rows AS $row){
preg_match("/^'(.+)' \=\> '(.+)'\$/", $row, $matches);
$array[$matches[1]] = $matches[2];
}
var_dump($array);
?>
答案 3 :(得分:2)
尝试这个(使用错误的工作变量名称,但它的工作原理) -
<?php
$str = "'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
$mstr = explode(",",$str);
$a = array();
foreach($mstr as $nstr )
{
$narr = explode("=>",$nstr);
$narr[0] = str_replace("\x98","",$narr[0]);
$ytr[1] = $narr[1];
$a[$narr[0]] = $ytr[1];
}
print_r($a);
键盘链接 - http://codepad.org/EqysY1CZ
答案 4 :(得分:2)
这里有肮脏的逻辑:)
<?php
$str="'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
echo $str='$arr='.'array('.$str.');';
eval($str);
echo "<pre>";
print_r($arr);
?>
答案 5 :(得分:-3)
您需要在PHP中使用explode功能。
refer-&GT; http://cz1.php.net/explode