2014-08-28 58 views
1

我有由線分開的值的字符串,所以我使用:改變從數值列鍵的名稱

$array = explode("\r\n", $string); 

該分隔值向上但是它使用數字爲密鑰。從字符串中分離出來的每個值實際上都是關鍵字,其後跟值即...... key = value。我想用值之前的值替換數組中的數字。因此,而不是:

array (size=2) 
    0 => string 'key1=value1' (Lenght=11) 
    1 => string 'key2=value2' (Lenght=11) 

我想:

array (size=2) 
    key1 => string 'value1' (Lenght=6) 
    key2 => string 'value2' (Lenght=6) 

回答

3

也許爆炸你的價值觀,並在一個新的陣列中使用它們,像這樣?

$array1 = array(
    'key1=value1', 'key2=value2' 
); 
$array2 = array(); 
foreach($array1 as $element) { 
    $explodedElement = explode('=', $element); 
    $array2[$explodedElement[0]] = $explodedElement[1]; 
} 

編輯:

爲了考慮您的字符串值中「=」字,我們應該在爆炸元素的第一個值後爆用「=」分解值,將第一個值我們假設永遠是關鍵價值。您還應該考慮密鑰中的空格,這就是爲什麼我們應該修剪密鑰和內部價值。

$array1 = array(
    'url = url.com?id=123456', 'key2=value2' 
); 
$array2 = array(); 
foreach($array1 as $element) { 
    $explodedElement = explode('=', $element); 
    $array2[trim($explodedElement[0])] = trim(implode('=',array_slice($explodedElement, 1))); 
} 
+0

完美,感謝 – David 2014-08-28 11:18:13

+0

如果它解決您的回答,請接受答案:) – 2014-08-28 11:18:54

+0

嗨,我沒有嘗試,但它說我必須等待一段時間......我想我會講一點很快,雖然, 有點。令人討厭的是,其中一些價值觀也具有相同的價值。該字符串傳回一個url,並且該url有一個等於它的意思,即'url'=> string'https://url.com?id=123456'有什麼想法? – David 2014-08-28 11:28:46

0

發生爆炸 '=',與相應的鍵添加此值,並刪除與此對應的二重唱以前的條目:

foreach ($array as $key => $arr) { 
    $val = explode ('=', $arr); 
    $array[$val[0]] = $val[1]; // Add key1 => string 'value1' (Lenght=6) 
    unset ($array[$key]); // Remove 0 => string 'key1=value1' (Lenght=11) 
} 

跳過未設置的部分,如果你想創建一個新的陣列,並保持前一個明顯