我需要解决方案如何比较两个键和值并从数组中找到最大键值。
解释:- 我有以下数组,如果 url 和 con 代码都相同,应该显示更高数量的数组,并且应该显示不匹配数据,请提供相同的解决方案。
$array = array(
array(
"id" => 1,
"amount" => 10,
"url" => 'https://play.google.com/store/apps/details?id=com.my.heroesofutopia',
"con" => array('US' =>array('id'=> '1','code'=>'US')),
),
array(
"id" => 2,
"amount" => 3,
"url" => 'https://play.google.com/store/apps/details?id=com.my.heroesofutopia' ,
"con" => array('US' =>array('id'=> '1','code'=>'US')),
),
array(
"id" => 3,
"amount" => 19,
"url" => 'https://play.google.com/store/apps/details?id=com.my.heroesofutopia' ,
"con" => array('US' =>array('id'=> '1','code'=>'US'),'Uk' =>array('id'=> '2','code'=>'UK')),
),
array(
"id" => 4,
"amount" => 50,
"url" => 'https://play.google.com/store/apps/details?id=com.my.heroesofutopia1111' ,
"con" => array('US' =>array('id'=> '1','code'=>'US'),'Uk' =>array('id'=> '2','code'=>'UK')),
),
);
请检查我想要的结果在此示例中,ID 1 和 2 ID 具有相同的 URL 和国家/地区代码,因此从这两个中我们必须选择更高的金额,one.so 我们选择这个并且 ID 3 和 4 不符合此条件,因此它在此数组中将保持不变,因为 ID 3 具有相同的 url 但具有不同的国家/地区代码,ID 4 具有不同的 URL。
我想要这个结果。请提供相同的解决方案,提前感谢...!!
array( "id" => 1,
"amount" => 10,
"url" => 'https://play.google.com/store/apps/details?id=com.my.heroesofutopia',
"con" => array('US' =>array('id'=> '1','code'=>'US')),
),
array(
"id" => 3,
"amount" => 19,
"url" => 'https://play.google.com/store/apps/details?id=com.my.heroesofutopia' ,
"con" => array('US' =>array('id'=> '1','code'=>'US'),'Uk' =>array('id'=> '2','code'=>'UK')),
),
array(
"id" => 4,
"amount" => 50,
"url" => 'https://play.google.com/store/apps/details?id=com.my.heroesofutopia1111' ,
"con" => array('US' =>array('id'=> '1','code'=>'US'),'Uk' =>array('id'=> '2','code'=>'UK')),
),
我的代码是
$output = [];
foreach($array as $data){
if(!isset($output[$data['url']]) ){
$output[$data['url']] = $data;
}
elseif( $output[$data['url']]['amount'] < $data['amount']){
$output[$data['url']] = $data;
}
}
echo "<pre>"; print_r($output);
这是
正确答案
$output = array_reduce($array, function ($carry, $itemA) {
return array_filter($carry, function ($itemB) use($itemA) {
return (
$itemB['url'] != $itemA['url']
|| $itemB['con'] != $itemA['con']
|| $itemB['amount'] >= $itemA['amount']
);
});
}, $array);