Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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中,如何在数组项的成员之后对数组进行排序?_Php_Sorting - Fatal编程技术网

在PHP中,如何在数组项的成员之后对数组进行排序?

在PHP中,如何在数组项的成员之后对数组进行排序?,php,sorting,Php,Sorting,我对数组中的日期排序有问题 $data[0]["Venue"]; $data[0]["VenueConfigurationID"]; $data[0]["VenueID"]; $data[0]["TimeStamp"]; $data[2]["Venue"]; $data[2]["VenueConfigurationID"]; $data[2]["VenueID"]; $data[2]["TimeStamp"]; $data[3]["Venue"]; $data[3]["VenueConfig

我对数组中的日期排序有问题

$data[0]["Venue"];
$data[0]["VenueConfigurationID"];
$data[0]["VenueID"];
$data[0]["TimeStamp"];

$data[2]["Venue"];
$data[2]["VenueConfigurationID"];
$data[2]["VenueID"];
$data[2]["TimeStamp"];

$data[3]["Venue"];
$data[3]["VenueConfigurationID"];
$data[3]["VenueID"];
$data[3]["TimeStamp"];

我想根据时间戳值对这些数组进行排序。

您可能正在查找。使用此函数,可以指定用于比较两个元素的比较函数。这样,你就可以写作了

function cmp($a, $b)
{
    if ($a['timestamp'] == $b['timestamp']) {
        return 0;
    }
    return ($a['timestamp'] < $b['timestamp']) ? -1 : 1;
}

我认为你可以做到这一点:

function cmp($a, $b){
$a_t = strtotime( $a['TimeStamp'] ) ; 
$b_t = strtotime( $b['TimeStamp'] ) ; 

if ($a_t == $b_t) {
    return 0;
}
return ($a_t < $b_t) ? -1 : 1;
}

usort($data,'cmp');
函数cmp($a,$b){
$a_t=strotime($a['TimeStamp']);
$b_t=strotime($b['TimeStamp']);
如果($a_t==$b_t){
返回0;
}
回报率($a_t<$b_t)?-1:1;
}
usort($data,'cmp');
希望它能工作

您可以使用(请参阅
生成比较器
功能的代码):


这将允许您按任意数量的条件对数据进行排序,您只需更改数组项的顺序或值即可轻松更改条件。

这里有很多正确的答案,但我通常更喜欢将
usort
用于匿名函数:

PHP≥ 5.3 PHP≥ 4.0.1 使用功能:-

<?php
// Obtain a list of columns
foreach ($data as $key => $row) {
    $timestamp[$key]  = $row['TimeStamp'];        
}

// Sort the data with timestamp descending    
array_multisort($timestamp, SORT_DESC, $data);
?>


希望这有帮助。

时间戳是整数形式。All-caps在互联网上相当于叫喊。请不要这样做。我已经试过了。
''函数cmp($a,$b){global$array;if($array[$a]['TimeStamp']<$array[$b]['TimeStamp']){return false;}否则{return true;}'@Charlie:为什么要使用
全局$array
$a
$b
是直接来自阵列的元素。此外:为什么返回
true
false
?file:///C:/Documents%20and%20Settings/fani/Desktop/C2%20Help/Sample.html
usort($data, make_comparer('TimeStamp'));
usort($data, function($a, $b) {
    return $a['timestamp'] - $b['timestamp'];
});
usort($data, create_function('$a, $b',
    'return $a["timestamp"] - $b["timestamp"];'
));
<?php
// Obtain a list of columns
foreach ($data as $key => $row) {
    $timestamp[$key]  = $row['TimeStamp'];        
}

// Sort the data with timestamp descending    
array_multisort($timestamp, SORT_DESC, $data);
?>