uasort的使用以及遇到的一些坑

具体用法如下:

 array(
        'salary' => 3000,
        'name'   => '张三',
        'gender' => '男'
    ),
    'woman' => array(
        'salary' => 5000,
        'name'   => '王二丫',
        'gender' => '女'
    )
);
uasort($arr, "compare");
function compare($a, $b)
{
    //  如果工资一样则不作比较
    if ($a['salary'] == $b['salary'])
        return 0;
    //  工资高的排在前面
    return ($a['salary'] > $b['salary']) ? 1 : -1;
}

很明显,上述代码根据用户的需求,把数组按照工资的大小进行了排列,最后的结果是工资高的王二丫排在了工资低的张三前面。
基本用法很简单,需要注意的是在类(Class)中使用这个方法的时候,需要在方法中传入$this指定当前对象。看代码:

 array(
            'salary' => 3000,
            'name'   => '张三',
            'gender' => '男'
        ),
        'woman' => array(
            'salary' => 5000,
            'name'   => '王二丫',
            'gender' => '女'
        )
    );
    uasort($arr, array($this, "compare"));
    }
    function compare($a, $b)
    {
        //  如果工资一样则不作比较
        if ($a['salary'] == $b['salary'])
            return 0;
        //  工资高的排在前面
        return ($a['salary'] > $b['salary']) ? 1 : -1;
    }
}

很明显,在类中调用uasort方法的时候,是与在文件中直接调用是不一样的,这或许就是面向对象和面向过程的一个差异吧。

你可能感兴趣的:(uasort的使用以及遇到的一些坑)