我有一个按行分隔值的字符串,所以我使用了:
$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)
答案 0 :(得分: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)));
}
答案 1 :(得分: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)
}
如果要创建新阵列并明显保留上一个阵列,请跳过未设置的部分