Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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数组_combine()函数工作不正常?_Php_Arrays - Fatal编程技术网

PHP数组_combine()函数工作不正常?

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_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]=> 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;