根据值中的数字对数组进行排序

时间:2014-08-27 11:46:35

标签: php arrays sorting

我有一个如下所示的数组:

Array
(
    [0] => ripe@hobby.nl 20140827
    [1] => bas@hobby.nl 20130827
    [2] => bas@dikkenberg.net 20140825
    [3] => bas@hobby.nl 20120825
    [4] => ripe@hobby.nl 20140826
)

现在我想基于数字在php中对这个数组进行排序,这样就忽略了排序过程中的电子邮件地址。

3 个答案:

答案 0 :(得分:4)

例如,假设条目总是像email space number

usort($ary, function($a, $b) {
    $a = intval(explode(' ', $a)[1]);
    $b = intval(explode(' ', $b)[1]);
    return $a - $b;
});

或使用Schwartzian transform更简单有效的方式:

$ary = array_map(function($x) {
    return [intval(explode(' ', $x)[1]), $x];
}, $ary);

sort($ary);

$ary = array_map(function($x) {
    return $x[1];
}, $ary);

答案 1 :(得分:1)

<?php
$data = Array(0 => 'ripe@hobby.nl 20140827',
    1 => 'bas@hobby.nl 20130827',
    2 => 'bas@dikkenberg.net 20140825',
    3 => 'bas@hobby.nl 20120825',
    4 => 'ripe@hobby.nl 20140826'
);

$count_data = count($data);

for($i=0;$i<$count_data;$i++)
{
    $new_data[trim(strstr($data[$i], ' '))]=$data[$i];
}
echo "<pre>"; print_r($new_data);
?>

这会让你回头

Array
(
    [20140827] => ripe@hobby.nl 20140827
    [20130827] => bas@hobby.nl 20130827
    [20140825] => bas@dikkenberg.net 20140825
    [20120825] => bas@hobby.nl 20120825
    [20140826] => ripe@hobby.nl 20140826
)

现在您可以根据需要按键

进行排序

答案 2 :(得分:0)

您可以遍历数组,explode空格上的字符串' ',然后将第一部分$explodedString[1]设置为新数组中的键,然后使用{{1}在新阵列上。

未经测试的代码。

ksort