0

我正在处理典型的情况,我想根据不区分大小写的基础对多维数组中的 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
     )
)
4

2 回答 2

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);
?>

希望这可以帮助。

于 2012-11-08T06:40:29.173 回答
1
$filtered = array();

foreach ($urls as $url) {
    $key = strtolower($url['url']);
    if (!isset($filtered[$key]) || $filtered[$key]['status']) {
        $filtered[$key] = $url;
    }
}

var_dump($filtered);
于 2012-11-08T07:21:54.687 回答