我试图将PHP中的两个数组与array_combine()函数结合起来,但有时候它工作正常,有时却不行。我无法理解为什么它会像这样工作!
我的代码:
var_dump($selectedDuretion);
var_dump($selectedDuretionType);
$combination = array_combine($selectedDuretion, $selectedDuretionType);
return $combination;
预期输出:
array(4)
{
[0]=> string(1) "3"
[1]=> string(2) "12"
[2]=> string(1) "4"
[3]=> string(1) "3"
}
array(4)
{
[0]=> string(4) "days"
[1]=> string(4) "days"
[2]=> string(5) "weeks"
[3]=> string(5) "weeks"
}
{"3":"days","12":"days","3":"weeks","4":"weeks"}
实际输出:
array(4)
{
[0]=> string(1) "3"
[1]=> string(2) "12"
[2]=> string(1) "4"
[3]=> string(1) "3"
}
array(4)
{
[0]=> string(4) "days"
[1]=> string(4) "days"
[2]=> string(5) "weeks"
[3]=> string(5) "weeks"
}
{"3":"weeks","12":"days","4":"weeks"}
令人震惊的阵列组合,如果有人告诉我为什么会发生这种情况以及如何解决它,我将感激不尽。
答案 0 :(得分:1)
PHP不允许您在数组中包含重复索引,而JSON允许您出于任何原因而拥有该索引。
由于您正在尝试将PHP数组转换为JSON,因此您的重复键将被删除。因此,您必须手动构建JSON字符串。
$json="";
for($i=0;$i<count($selectedDuration);$i++)
{
$json.='"'.$selectedDuration[$i].'":"'.$selectedDurationType[$i].'",';
}
$json=rtrim($json,",");
$json="{".$json."}";
echo $json;
<强>输出强>
{"3":"days","12":"days","4":"weeks","3":"weeks"}
<强> Fiddle 强>