Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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_Merge_Key - Fatal编程技术网

Php 将值从一个数组插入到另一个数组并保留其键

Php 将值从一个数组插入到另一个数组并保留其键,php,arrays,merge,key,Php,Arrays,Merge,Key,我有两个阵列: Array ( [1] => image1 [4] => image2 ) Array ( [0] => title 1 [2] => title 2 [3] => title 3 ) 我只想合并这些数组并保留它们的密钥([1]=>image1也将位于新数组中的[1]) 有什么想法吗?谢谢 我认为这个功能是有效的。您只能使用数字键 $array1; $array2; array_weird_merge($

我有两个阵列:

Array
(
    [1] => image1
    [4] => image2
)

Array
(
    [0] => title 1
    [2] => title 2
    [3] => title 3
)
我只想合并这些数组并保留它们的密钥(
[1]=>image1
也将位于新数组中的
[1]


有什么想法吗?谢谢

我认为这个功能是有效的。您只能使用数字键

$array1;
$array2;

array_weird_merge($array1, $array2){
    $result = array();

    //get the keys of each array
    $keys1 = array_keys($array1);
    $kesy2 = array_keys($array2);

    //get the max keys of the 2 arrays
    $max = max($key1, $key2);
    //we go trough all the possible values
    for ($i=0; $i<$max;$i++){
        //if the array 1 has an element in the
        //$i position, we put it in the result
        //if not, then we check in the second
        //array. (we give priority to the array
        //that comes first)
        if(isset($array1[$i])){
            $result[$i] = $array1[$i];
        }else if(isset($array2[$i])){
            $result[$i] = $array2[$i];
        }
    }
    return $result;
}
$array1;
$array2;
数组合并($array1,$array2){
$result=array();
//获取每个数组的键
$keys1=数组\ U键($array1);
$kesy2=阵列密钥($array2);
//获取2个数组的最大密钥
$max=max($key1,$key2);
//我们仔细研究所有可能的价值观

对于($i=0;$i我认为这个函数有效。你只需要使用数字键

$array1;
$array2;

array_weird_merge($array1, $array2){
    $result = array();

    //get the keys of each array
    $keys1 = array_keys($array1);
    $kesy2 = array_keys($array2);

    //get the max keys of the 2 arrays
    $max = max($key1, $key2);
    //we go trough all the possible values
    for ($i=0; $i<$max;$i++){
        //if the array 1 has an element in the
        //$i position, we put it in the result
        //if not, then we check in the second
        //array. (we give priority to the array
        //that comes first)
        if(isset($array1[$i])){
            $result[$i] = $array1[$i];
        }else if(isset($array2[$i])){
            $result[$i] = $array2[$i];
        }
    }
    return $result;
}
$array1;
$array2;
数组合并($array1,$array2){
$result=array();
//获取每个数组的键
$keys1=数组\ U键($array1);
$kesy2=阵列密钥($array2);
//获取2个数组的最大密钥
$max=max($key1,$key2);
//我们仔细研究所有可能的价值观
对于($i=0;$i应该有效:)

array2中的键和值将追加到末尾。如果您的数组只是数字数组,您可以使用将其调整到正确的顺序。

应该可以使用:)


array2中的键和值将被追加到末尾。如果您的数组只是数字数组,您可以使用将其调整到正确的顺序。

“带有数字键的输入数组中的值将在结果数组中以从零开始的递增键重新编号。”(php手册)我正在编辑答案,因为我在发布后就看到了我的错误,你们都是对的。不,仍然不是。它只会在较长的数组中添加“悬垂”部分。请参阅cb在数组运算符手册中的第一条注释!@adnontheline:您可能误读了一些内容,我链接了一个演示。@hakre,我在哪里可以看到演示?我用OP的数组不起作用。Daniel,对于非数字数组来说,这是一个很好的解决方案,可以保持顺序,就像它一样。对于简单的数字数组,比如OPs,我想我的孤子会更好一些;)“带有数字键的输入数组中的值将在结果数组中用从零开始递增的键重新编号。”(php手册)我正在编辑答案,因为我在发布后就看到了我的错误,你们都是对的。不,仍然不是。它只会在较长的数组中添加“悬垂”部分。请参阅cb在数组运算符手册中的第一条注释!@adnontheline:您可能误读了一些内容,我链接了一个演示。@hakre,我在哪里可以看到演示?我用OP的数组不起作用。丹尼尔,对于非数值数组来说,这是一个很好的解决方案来保持顺序,就像它一样。对于简单的数值数组,比如OP,我想我的孤子会更好一些;)如果出现键冲突,会发生什么?如果出现键冲突,会发生什么?是的,记住键可能会冲突。如果你不要这样,不要担心,否则你需要单独处理此异常是的,请记住密钥可能会冲突。如果你没有,不要担心,否则你需要单独处理此异常