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

时间:2018-09-18 05:37:05

标签: php arrays ajax

我尝试搜索一种快速解决方案,将逗号分隔的key => value字符串转换为关联数组,但找不到任何数组。所以我不得不自己快速修复。

ANTECEDENT

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

matrix1

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

问题

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

matrix

与以下相同:

matrix1

Meanwhle,我需要的是:

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

解决方案

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');
...

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

2 个答案:

答案 0 :(得分:3)

您可以在javascript中添加作为键值对。然后,您无需执行任何操作即可直接在PHP中访问。

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

在PHP中:

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

答案 1 :(得分: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