Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中从字符串生成关联数组?_Php_Arrays_Foreach_Associative Array - Fatal编程技术网

如何在PHP中从字符串生成关联数组?

如何在PHP中从字符串生成关联数组?,php,arrays,foreach,associative-array,Php,Arrays,Foreach,Associative Array,假设现在我有一个字符串: $detail = "1=>Apple, 2=>Cheesecake, 3=>Banana"; 如何将字符串$detail转换或解析为关联数组,并变成这样: $detail_arr['1'] = "Apple"; $detail_arr['2'] = "Cheesecake"; $detail_arr['3'] = "Banana"; 或 如下面的代码所示: $detail_arr = array("1"=>"Apple", "2"=>

假设现在我有一个字符串:

$detail = "1=>Apple, 2=>Cheesecake, 3=>Banana";
如何将字符串
$detail
转换或解析为关联数组,并变成这样:

$detail_arr['1'] = "Apple";
$detail_arr['2'] = "Cheesecake";
$detail_arr['3'] = "Banana";

如下面的代码所示:

$detail_arr = array("1"=>"Apple", "2"=>"Cheesecake", "3"=>"Banana");

foreach($detail_arr as $x=> $x_name)
{
    echo "Price=" . $x . ", Name=" . $x_name;
}
并将显示:

Price = 1, Name = Apple, ...
使用
explode()

$arr = [];
foreach (explode(',', $detail) as $item){
    $parts = explode('=>', $item);
    $arr[trim($parts[0])] = $parts[1];
}
检查结果

您还可以使用
preg\u match\u all()
array\u combine()
来完成这项工作

preg_match_all("/(\d+)=>([^,]+)/", $detail, $matches);
$arr = array_combine($matches[1], $matches[2]);

这就是答案!谢谢你的帮助。如果关键是价格,那么你的阵列中只能有一个相同价格的物品。