Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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/4/wpf/13.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 按2个键按1个顺序排序数组_Php - Fatal编程技术网

Php 按2个键按1个顺序排序数组

Php 按2个键按1个顺序排序数组,php,Php,我有一个这样的数组 [Badi Assad] => Array ( [last_name] => Assad [first_name] => Badi [artist_name] => [asterick] => * [slug] => badiassad ) [Ben Taylor] => Array ( [last_name

我有一个这样的数组

  [Badi Assad] => Array
    (
        [last_name] => Assad
        [first_name] => Badi
        [artist_name] => 
        [asterick] => *
        [slug] => badiassad
    )

[Ben Taylor] => Array
    (
        [last_name] => Taylor
        [first_name] => Ben
        [artist_name] => Ben Taylor
        [asterick] => *
        [slug] => bentaylor
    )

[Beverly] => Array
    (
        [last_name] => Hills
        [first_name] => Beverly
        [artist_name] => Beverly
        [asterick] => 
        [slug] => Eedih
    )

[Bruce Cockburn] => Array
    (
        [last_name] => Cockburn
        [first_name] => Bruce
        [artist_name] => Bruce Cockburn
        [asterick] => *
        [slug] => brucecockburn
    )

[Bohème] => Array
    (
        [last_name] => 
        [first_name] => Cassidy
        [artist_name] => Bohème
        [asterick] => *
        [slug] => cassidy
    )
我将如何排序,使其与姓氏和艺术家名称按顺序排列,姓氏优先于艺术家名称,除非是空的

结果应该是这样的

  [Badi Assad] => Array
    (
        [last_name] => Assad
        [first_name] => Badi
        [artist_name] => 
        [asterick] => *
        [slug] => badiassad
    )
[Bohème] => Array
    (
        [last_name] => 
        [first_name] => Cassidy
        [artist_name] => Bohème
        [asterick] => *
        [slug] => cassidy
    )
[Bruce Cockburn] => Array
    (
        [last_name] => Cockburn
        [first_name] => Bruce
        [artist_name] => Bruce Cockburn
        [asterick] => *
        [slug] => brucecockburn
    )

[Beverly] => Array
    (
        [last_name] => Hills
        [first_name] => Beverly
        [artist_name] => Beverly
        [asterick] => 
        [slug] => Eedih
    )
[Ben Taylor] => Array
    (
        [last_name] => Taylor
        [first_name] => Ben
        [artist_name] => Ben Taylor
        [asterick] => *
        [slug] => bentaylor
    )
我正在尝试这个

    $newartists = array();
foreach($users as $k => $v)
 {
    $name = (strlen($v['artist_name']) > 0) ? $v['artist_name'] : $v['first_name'].' '.$v['last_name'];
    $newartists[$name]['last_name'] = $v['last_name'];
    $newartists[$name]['first_name'] = $v['first_name'];
    $newartists[$name]['artist_name'] = $v['artist_name'];
    $newartists[$name]['asterick'] = $ask;
    $newartists[$name]['slug'] = $v['slug'];
}                    
$sort = array();
foreach($newartists as $k=>$v) {
    $sort['artist_name'][$k] = $v['artist_name'];
    $sort['last_name'][$k] = $v['last_name'];
}

array_multisort( $sort['last_name'], SORT_ASC,$sort['artist_name'], SORT_ASC, $newartists);
谢谢

使用类似这样的方法:

<?php
    $newartists = array(
        '3' => array(
            'last_name'   => 'c',
            'artist_name' => 'c'
        ),
        '1' => array(
            'artist_name' => 'a'
        ),
        '2' => array(
            'last_name'   => 'b',
            'artist_name' => 'd'
        ),
    );

    function cmp($a, $b)
    {
        $result = 0;

        // Sort preferably by last name
        if (!empty($a['last_name']) && !empty($b['last_name'])) {
            $result = strcmp($a["last_name"], $b["last_name"]);

        // Failover to artist name sort
        } else {
            $result = strcmp($a["artist_name"], $b["artist_name"]);
        }

        return $result;
    }

    usort($newartists, "cmp");

您应该使用[uksort][1][1]:在数组排序函数旁边,您还需要使用unicode(或您使用的编码)的东西。我相信对于裸数组排序,你已经在这个网站上找到了三个或更多的好例子。在你摆弄了这些之后,如果你不能在PHP.aaaa中使用基于unicode的排序,请告诉我,当你运行上面的代码段时发生了什么?这给了我这个答案。数组中的第一个和第二个是反向的。
Array
(
    [1] => Array
        (
            [artist_name] => a
        )

    [2] => Array
        (
            [last_name] => b
            [artist_name] => d
        )

    [3] => Array
        (
            [last_name] => c
            [artist_name] => c
        )
)