[英]Compare values of two multidimentional array and insert if not exits
I have two array $array1
and $array2
which I get dynamically and look like 我有两个数组
$array1
和$array2
我动态获得,看起来像
$array1 = Array
(
[0] => Array
(
[hour] => 10
[activity] => Array
(
[0] => Array
(
[activity_id] => 1
[cnt] => 2
)
[1] => Array
(
[activity_id] => 2
[cnt] => 1
)
)
)
[1] => Array
(
[hour] => 11
[activity] => Array
(
)
)
[2] => Array
(
[hour] => 12
[percentage] => 0
[activity] => Array
(
[0] => Array
(
[activity_id] => 2
[cnt] => 5
)
[1] => Array
(
[activity_id] => 3
[cnt] => 2
)
)
)
);
$array2 = Array
(
[0] => Array
(
[id] => 1
[name] => Phone Calls
[readable] => 1
[status] => active
)
[1] => Array
(
[id] => 2
[name] => Meeting With Customer
[readable] => 1
[status] => active
)
[2] => Array
(
[id] => 3
[name] => Others Works
[readable] => 1
[status] => active
)
);
which i need to compare. 我需要比较。
if $array2['id']
is not in $array1["activity"]
(ie"activity_id") add array ['activity_id'=>$array2['id'],'cnt'=>0]
to $array1['activity']
. 如果
$array2['id']
不在$array1["activity"]
(即“ activity_id”),则将数组['activity_id'=>$array2['id'],'cnt'=>0]
到$array1['activity']
。
My result must be like 我的结果一定是
$result = Array
(
[0] => Array
(
[hour] => 10
[activity] => Array
(
[0] => Array
(
[activity_id] => 1
[cnt] => 2
)
[1] => Array
(
[activity_id] => 2
[cnt] => 1
)
[2] => Array
(
[activity_id] => 3
[cnt] => 0
)
)
)
[1] => Array
(
[hour] => 11
[activity] => Array
(
[0] => Array
(
[activity_id] => 1
[cnt] => 0
)
[1] => Array
(
[activity_id] => 2
[cnt] => 0
)
[2] => Array
(
[activity_id] => 3
[cnt] => 0
)
)
)
[2] => Array
(
[hour] => 12
[percentage] => 0
[activity] => Array
(
[0] => Array
(
[activity_id] => 1
[cnt] => 0
)
[1] => Array
(
[activity_id] => 2
[cnt] => 5
)
[2] => Array
(
[activity_id] => 3
[cnt] => 2
)
)
)
);
What i have tried is 我试过的是
$finalArray = array();
foreach($array1 as $arr1) {
foreach($array2 as $arr2) {
if(!in_array($arr2['id'], $arr1['activity'])) {
$array = ['activity_id'=>$arr2['id'], 'cnt'=>0];
}
array_push($arr1['activity'], $array);
unset($array);
}
array_push($finalArray, $result);
}
print_r($finalArray);
in_array()
function is not working as I excepted or I am trying to do it in the wrong way. in_array()
函数无法正常工作,或者我尝试以错误的方式进行操作。 Can someone helps me with this? 有人可以帮我吗?
Sorry,finally i get what i did wrong.May be someone get helped. 抱歉,最后我明白我做错了。可能有人得到帮助。
everything is ok just change the line 一切都很好,只是换行
if(!in_array($arr2['id'], $arr1['activity'])) {
into 成
if(!in_array( $readActivity['id'], array_column($result['activity'],'activity_id'))){
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.