如何在PHP中将逗号分隔的键值字符串转换为关联数组

问题描述 投票:1回答:2

我试图快速修复将逗号分隔的key => value字符串转换为关联数组但无法找到任何字符串。所以我必须自己快速解决问题。

前情

我使用Jquery生成了一些表单元素的数组,通过ajax发送。所以我有类似的东西:

var myarray = [];
var string1 = 'key1=>'+form['value1'].value; //and we have string2 and more
myarray.push(string1);

然后我将“myarray”作为数据发送到表单处理脚本。

问题

现在我有一个数组来处理我的PHP脚本。我有以下内容:

function($var,$data){
$string = $data('myarray'); //array created earlier with jquery
}

这与以下相同:

...
$string = array(0=>'key1=>value1',1=>'key2=>value2');
...

同时,我需要的是:

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

...
$string = $data('myarray');
$string1 = array();
foreach($string as $value){
    $split = explode('=>',$value);
    $string1[$split[0]]=$split[1];
}
...

现在我可以访问每个键的值:

echo $string1['key1']; //gives value1

此解决方案还可用于以下情况:

$string = 'key1=>value1,key2=>value2...';
$string = explode(',',$string); // same as $string = array('key1'=>'value1',...)
$string1 = array();
foreach($string as $value){
    $split = explode('=>',$value);
    $string1[$split[0]]=$split[1];
}

解决方案比我预期的要简单得多,但如果你知道更好的方法来进行这种转换,请随时提出建议。

php arrays ajax
2个回答
3
投票

您可以在javascript中添加键值对。然后你不需要做任何操作,可以直接在PHP中访问。

var myarray = {};
myarray['key1'] = form['value1'].value;

在PHP中:

$arr = $data('myarray');
echo $arr['key1']

1
投票

使用explode()分割字符串。

$string = 'key1=>value1,key2=>value2,key3=>value3';
$pairs = explode(',', $string);
$data = array();
foreach ($pairs as $pair) {
    list($key, $value) = explode('=>', $pair);
    $data[$key] = $value;
}
var_dump($data);

DEMO

© www.soinside.com 2019 - 2024. All rights reserved.