2016-04-29 211 views
0

我正在開發一個PHP應用程序,並通過將字符串數組轉換爲對象數組產生問題。我嘗試使用(數組)強制將字符串轉換爲數組,但它不起作用。這裏是我的字符串(調試):將PHP字符串數組轉換爲數組對象

string '['method'=>'post','action'=>'#']' (length=32)

正如你所看到的,這是一個完美的陣列成一個字符串,我想那個字符串轉換。

我的問題很簡單,PHP有一個函數直接將字符串轉換爲數組(我認爲不是)或者我必須通過使用爆炸轉換我的字符串?

+0

如何/你在哪裏得到這個字符串? –

+0

說真的,我會考慮改變你的應用程序中的某些東西,如果有的話你需要這樣做。 –

回答

0

從PHP 5.4,你可以簡單的eval: 的eval(「\ $ F = [」方法 '=>' 後」, '動作'=> '#'];「); var_dump($ f);

對於老年人,您必須修正字符串,將第一個「[」更改爲「數組(」,最後一個「]」更改爲「)」。

的問題是How to create an array from output of var_dump in PHP?

+0

感謝您的快速和正確的答覆!我忘了那個eval函數;) – houceni

+1

小心使用eval,雖然_never ever_與用戶輸入一起使用它;) – SixteenStudio

0

這裏是你如何定義一個數組。 可是我在寫代碼之前,請看看manuels

$arrayName = array('method' => 'post', 'action' => '#'); 

輸出將讀取

array (size=2) 
    'method' => string 'post' (length=4) 
    'action' => string '#' (length=1) 
0

有點重複,您可以使用preg_splitforeach(),使這項工作:

$str = "['method'=>'post','action'=>'#']"; 

$splitArray = preg_split("/[,']+/", $str); 
foreach ($splitArray as $k => $val) { 
    if ($val == '=>') { 
    $newArr[$splitArray[$k - 1]] = $splitArray[$k + 1]; 
    } 
} 

var_dump($newArr); 
/*newArr 
Array 
(
    [method] => post 
    [action] => # 
)*/