Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 - Fatal编程技术网

Php 组合两个值匹配的关联数组

Php 组合两个值匹配的关联数组,php,Php,我有两个关联数组:$arr1和$arr2。我想创建$arr3,如果日期匹配,它将组合“name”和“character”…如果日期不匹配,则只需字符: 这是1美元: Array ( [0] => stdClass Object ( [date] => 2010/01/01 [name] => Mario Lopez ) [1] => stdClass Object ( [date] => 20

我有两个关联数组:$arr1和$arr2。我想创建$arr3,如果日期匹配,它将组合“name”和“character”…如果日期不匹配,则只需字符:

这是1美元:

Array
(
[0] => stdClass Object
    (
        [date] => 2010/01/01
        [name] => Mario Lopez
    )

[1] => stdClass Object
    (
        [date] => 2010/01/02
        [name] => Lark Voorhies
    )

)
这是2美元:

Array
(
[0] => Array
    (
        [date] => 2010/01/01
        [character] => AC Slater
    )

[1] => Array
    (
        [date] => 2010/01/02
        [character] => Lisa Turtle
    )
[2] => Array
    (
        [date] => 2010/01/03
        [character] => Kelly Kapowski
    )
)
使用array_intersect会出现以下错误:“stdClass类的对象无法转换为字符串”

这是我想要的,如果可能的话(即$arr3):


这个函数发布在php.net上,我已经用了很长时间了。它应该满足你的要求

function array_extend($a, $b) {
    foreach($b as $k=>$v) {
        if( is_array($v) ) {
            if( !isset($a[$k]) OR isset($v[0])) {
                $a[$k] = $v;
            } else {
                $a[$k] = array_extend($a[$k], $v);
            }
        } else {
            $a[$k] = $v;
        }
    }
    return $a;
}
用法:

$array = array_extend($orig_array,$new_array);
请注意,您必须将对象转换为数组,或者修改函数以将对象动态转换为数组($a=(array)$a)

编辑:

原始来源


请注意,我做了一个小的修改,以解决给定函数的一个问题,即它无法正确扩展带有数字键的数组。此函数发布在php.net上,我已经使用了很长一段时间。它应该满足你的要求

function array_extend($a, $b) {
    foreach($b as $k=>$v) {
        if( is_array($v) ) {
            if( !isset($a[$k]) OR isset($v[0])) {
                $a[$k] = $v;
            } else {
                $a[$k] = array_extend($a[$k], $v);
            }
        } else {
            $a[$k] = $v;
        }
    }
    return $a;
}
用法:

$array = array_extend($orig_array,$new_array);
请注意,您必须将对象转换为数组,或者修改函数以将对象动态转换为数组($a=(array)$a)

编辑:

原始来源


请注意,我做了一个小修改,以解决给定函数的一个问题,即它无法正确扩展带有数字键的数组

您必须编写一个自定义函数来执行组合。您必须编写一个自定义函数来执行组合。谢谢$数组=数组扩展($orig\u数组,$new\u数组);。。。。。你的意思是:$array=array\u extend($arr1,$arr2)?变量的命名无关紧要:我只是一个例子,调用变量$arr1,$arr2不会有任何区别:)谢谢$数组=数组扩展($orig\u数组,$new\u数组);。。。。。你的意思是:$array=array\u extend($arr1,$arr2)?变量的命名无关紧要:P我只是一个例子,调用变量$arr1,$arr2不会有任何区别:)