2014-08-28 69 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) 
} 

跳过未设置的部分,如果你想创建一个新的阵列,并保持前一个明显