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

PHP中如何将逗号分隔的键值字符串转换为关联数组,php,arrays,ajax,Php,Arrays,Ajax,我尝试搜索一个快速修复方法,将逗号分隔的key=>value字符串转换为关联数组,但找不到任何方法。所以我必须自己做一个快速修复 先例 我使用Jquery生成了一些表单元素的数组,通过ajax发送。 所以我有点像: var myarray = []; var string1 = 'key1=>'+form['value1'].value; //and we have string2 and more myarray.push(string1); 然后我将“myarray”作为数据发送到表

我尝试搜索一个快速修复方法,将逗号分隔的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];
}

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

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

var myarray = {};
myarray['key1'] = form['value1'].value;
在PHP中:

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

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

var myarray = {};
myarray['key1'] = form['value1'].value;
在PHP中:

$arr = $data('myarray');
echo $arr['key1']
使用
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);

使用
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);

您可以创建一个json对象,并将其作为字符串发布。然后您只需要执行
$array=json\u解码($\u POST['your-data'],true)在PHP中,您将拥有一个关联数组……而且,这是您的实际代码吗?
$data
是函数吗?如果没有,那么它应该抛出错误,因为在访问数组元素时需要使用
[]
而不是
()
。json…我从来没有想过。谢谢。$数据来自函数。我只是不想在我的问题中添加这么多代码你是说
$data
包含一个函数?在发布问题时,最好让我们知道这一点,否则我们将无法理解您的代码的实际功能(因为我们不知道您是否有输入错误)。您可以创建一个json对象,并将其作为字符串发布。然后您只需要执行
$array=json\u解码($\u POST['your-data'],true)在PHP中,您将拥有一个关联数组……而且,这是您的实际代码吗?
$data
是函数吗?如果没有,那么它应该抛出错误,因为在访问数组元素时需要使用
[]
而不是
()
。json…我从来没有想过。谢谢。$数据来自函数。我只是不想在我的问题中添加这么多代码你是说
$data
包含一个函数?在发布问题时,最好让我们知道这一点,否则我们将无法理解您的代码的实际功能(因为我们不知道您是否有拼写错误)。