2013-12-13 77 views
0

我有一個字符串:字符串轉換爲關聯數組PHP

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', ....); 

請幫忙。

+2

你從哪裏得到那個字符串? –

+2

該字符串從哪裏來? – moonwave99

+1

這是我從過濾器窗體中獲得的字符串。 – Walllter

回答

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

3

最快和簡單,但真的不安全

$str = "array('3'=>'www.tension.com','1'=>'www.seomeuo.com','requestedBy'=>'1')"; 
eval("\$array = $str;"); 

你不應該使用這種方法,有另一種方式來做到這一點,如:serialize()unserialize()

+0

避免使用eval() –

+0

我爲安全考慮寫了上面的評論,我知道它會工作。 –

+0

呃,有一個eval()的問題.... – sergio

-3

您需要使用爆炸功能在PHP中。
refer->http://cz1.php.net/explode

+0

這是最好的發佈此評論。不正確的答案 – Freak

+2

是的,你是對的。我應該評論它。無法發表評論,因爲我沒有足夠的積分來這樣做。但我會照顧未來發布正確的答案。感謝:)需要得分更多才能成爲球隊的一部分:-P –

+0

他們只有23代表,所以他們不能留下評論。 OP,我會建議充實一下,這是一個合法的答案。 – Zarathuztra

2

試試這個代碼,並使用爆炸()的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

我想練正則表達式。一個大問題是你的字符串既有','也有', '作爲分隔符,所以你需要解決這個問題。

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

例子:http://ideone.com/4oad4t

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