PHP数组_combine()函数工作不正常?
我试图用array_combine()函数将PHP中的两个数组组合起来,但有时效果很好,有时则不然。我不明白它为什么会这样工作 我的代码: 预期输出:PHP数组_combine()函数工作不正常?,php,arrays,Php,Arrays,我试图用array_combine()函数将PHP中的两个数组组合起来,但有时效果很好,有时则不然。我不明白它为什么会这样工作 我的代码: 预期输出: 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]=>
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"}
实际输出:
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"}
数组的组合令人震惊,如果有人告诉我为什么会发生这种情况以及如何解决它,我将不胜感激。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
。如何处理它们?Php数组不能有重复的键,因此如果存在重复的键,即“3”:“days”,“3”:“weeks”
,则第二个值将覆盖第一个值,只产生第二个值,在本例中为“3”:“weeks”
。您不能使用类似的索引/键创建数组。数组键必须是唯一的。谢谢您,汉基·潘基先生,我希望您今后不要让您的下级失望。
var_dump($selectedDuretion);
var_dump($selectedDuretionType);
$combination = array_combine($selectedDuretion, $selectedDuretionType);
return $combination;