PHP array_combine()函数不能正常工作?

时间:2016-05-26 04:58:52

标签: php arrays

我试图将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"}

令人震惊的阵列组合,如果有人告诉我为什么会发生这种情况以及如何解决它,我将感激不尽。

1 个答案:

答案 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