PHP-尝试按数字字段对数组排序

PHP-尝试按数字字段对数组排序,php,Php,我有一系列数据,包括“客户”和“总计”。(下面的例子)。它来自两个不同的数据库 我需要一种基于Total字段对数组进行排序的方法,以便最大的Total位于顶部。但到目前为止,我尝试过的每一件事都是假设5大于32 [5,32,25,16,11] 最简单的方法是什么?我尝试将intval()添加到strcmp函数中,但没有效果 $arrayName = array(); $arrayName[] = array ('customer' => 'Customer1', 'Total' =>

我有一系列数据,包括“客户”和“总计”。(下面的例子)。它来自两个不同的数据库

我需要一种基于Total字段对数组进行排序的方法,以便最大的Total位于顶部。但到目前为止,我尝试过的每一件事都是假设5大于32 [5,32,25,16,11]

最简单的方法是什么?我尝试将intval()添加到strcmp函数中,但没有效果

$arrayName = array();

$arrayName[] = array ('customer' => 'Customer1', 'Total' => 25);
$arrayName[] = array ('customer' => 'Customer2', 'Total' => 16);
$arrayName[] = array ('customer' => 'Customer3', 'Total' => 32);
$arrayName[] = array ('customer' => 'Customer4', 'Total' => 5);
$arrayName[] = array ('customer' => 'Customer5', 'Total' => 11);

print_r($arrayName);
print "</br>";

//Sort the Arrray by Total
function arrSort1($b, $a)
{
    return strcmp($a['Total']), $b['Total']);
};

usort($arrayName, "arrSort1");

print_r($arrayName);
$arrayName=array();
$arrayName[]=array('customer'=>'Customer1','Total'=>25);
$arrayName[]=array('customer'=>'Customer2','Total'=>16);
$arrayName[]=array('customer'=>'Customer3','Total'=>32);
$arrayName[]=array('customer'=>'Customer4','Total'=>5);
$arrayName[]=array('customer'=>'Customer5','Total'=>11);
打印(arrayName);
打印“
”; //按总数对数组进行排序 函数arrSort1($b,$a) { 返回strcmp($a['Total'])、$b['Total']); }; usort($arrayName,“arrSort1”); 打印(arrayName);
您正在按字符串进行比较,但确实希望按数值进行比较。尝试:

function arrSort1($b, $a)
{
    if ($a['Total'] > $b['Total']) {
        return 1;
    } else if ($a['Total'] < $b['Total']) {
        return -1;
    }
    return 0;
}

从词汇上比较,“5”大于“32”。为什么要对数字使用strcmp?!我从来没有这样想过,很好的观点
-
$cmp
需要返回一个
int
@deceze,我不确定是否遵循,返回一个是否大于另一个,按
总数
降序排列数组。您可以通过将
更改为
使其升序。比较函数必须返回“值
<0
0
>0
,这取决于第一个值是否小于、等于或大于第二个值。”a
bool
不会做完全相同的事情。干杯,简单地更改“返回”行就解决了它。@deceze你说得对,现在我想起来了,我通常使用if/then。我更新了答案。
Array
(
    [0] => Array
        (
            [customer] => Customer3
            [Total] => 32
        )

    [1] => Array
        (
            [customer] => Customer1
            [Total] => 25
        )

    [2] => Array
        (
            [customer] => Customer2
            [Total] => 16
        )

    [3] => Array
        (
            [customer] => Customer5
            [Total] => 11
        )

    [4] => Array
        (
            [customer] => Customer4
            [Total] => 5
        )

)