2011-02-15 109 views
1

我有一個字符串,它看起來像:key1/value1/key2/value2/如何在PHP中將鍵/值鏈解析爲關聯數組?

我對

一個explode('/',trim($mystring,'/'))現在我想天堂關聯數組,如:

array(
'key1' => 'value1', 
'key2' => 'value2', 
    ... 
); 

當然我可以做它與一個for循環,我總是讀兩個條目,並將它們推入目標數組,但沒有更有效和優雅的東西?一些與一些PHP核心函數類似於list()的東西?或者什麼東西?

+0

最有可能不是。但是你可以定義你自己的功能並重用它,然後你有一個班輪;) – 2011-02-15 12:15:24

回答

1

使用方法array_walk()的一個回調函數:

function buildNewArray($value, $key, &$newArray) { 
    (($key % 2) == 0) ? $newArray[$value] = '' : $newArray[end(array_keys($newArray))] = $value; 
} 

$myString = 'key1/value1/key2/value2/'; 
$myArray = explode('/',trim($myString,'/')); 

$newArray = array(); 
array_walk($myArray, 'buildNewArray', &$newArray); 

var_dump($newArray); 
0

一個人可以總是讓自己成爲一個班輪。

這就是所謂的User-defined functions

無需設計醜陋的東西,但是一班輪,不惜一切代價。
做你自己的功能,你會得到更短,更乾淨,方式更可靠的結果。
一個函數,不僅可以進行基本的字符串操作,還可以執行更智能的操作,如參數驗證。

1

如果格式不是changin(我的意思是總是Key1/value1/key2/value2)它應該很容易。

的爆炸後,你有這樣的:

$arr = Array('key1','value1','key2','value2') 

,所以你現在可以做的:

$new_arr = array(); 
$i = 0;  
for($i=0;$i<count($arr);$i+=2) 
{ 
    $new_arr[$arr[i]] = $arr[$i+1]; 
} 

在循環結束時,您將擁有:

$new_arr = array("key1"=>"value1","key2"=>"value2") 

KISS: )

HTH!

相關問題