我正在处理典型情况,我想根据不区分大小写的基础从多维数组中对URL进行排序,以及它们与URL相关联的状态。如果用户设置了多个具有不同状态的URL,那么我想从重复的URL中获取状态设置为false的唯一一个url。
原始阵列:
Array
(
[0] => Array
(
[url] => www.abc.com
[status] => true
)
[1] => Array
(
[url] => www.123.com
[status] => true
)
[2] => Array
(
[url] => www.abc.com
[status] => true
)
[3] => Array
(
[url] => www.Abc.com
[status] => false
)
)
我想要的最终结果:
Array
(
[0] => Array
(
[url] => www.abc.com
[status] => false
)
[1] => Array
(
[url] => www.123.com
[status] => true
)
)
答案 0 :(得分:1)
试试这个:
<?php
$arr = array(
array(
'url' => 'www.abc.com',
'status' => 'true'
),
array(
'url' => 'www.123.com',
'status' => 'true'
),
array(
'url' => 'www.abc.com',
'status' => 'true'
),
array(
'url' => 'www.Abc.com',
'status' => 'false'
)
);
function tolower($v) {
return array('url'=>strtolower($v['url']),'status'=>$v['status']);
}
$arr = array_map("unserialize", array_unique(array_map("serialize",array_map("tolower", $arr))));
print_r($arr);
?>
希望这有帮助。
答案 1 :(得分:1)
$filtered = array();
foreach ($urls as $url) {
$key = strtolower($url['url']);
if (!isset($filtered[$key]) || $filtered[$key]['status']) {
$filtered[$key] = $url;
}
}
var_dump($filtered);