嘿,我在 php 中有這個物件。我想按時間戳對變數 $tempData 中的陣列進行排序
array (
0 =>
array (
'Timestamp' => '2022-02-21 06:00',
'Date' => '2022-02-21',
'Hour' => '06',
),
1 =>
array (
'Timestamp' => '2022-02-21 08:00',
'Date' => '2022-02-21',
'Hour' => '08',
),
2 =>
array (
'Timestamp' => '2022-02-21 03:00',
'Date' => '2022-02-21',
'Hour' => '03',
),
3 =>
array (
'Timestamp' => '2022-02-21 00:00',
'Date' => '2022-02-21',
'Hour' => '00',
),
)
我從https://stackoverflow.com/questions/1597736/how-to-sort-an-array-of-associative-arrays-by-value-of-a-given-key-in-php嘗試此代碼
$sortedArray = array();
foreach ($tempData as $key => $row)
{
$sortedArray[$key] = $row['Timestamp'];
}
array_multisort($sortedArray, SORT_DESC, $tempData);
結果是
[2022-02-21 05:26:30] local.INFO: The sorted data are:
[2022-02-21 05:26:30] local.INFO: array (
0 => '2022-02-21 06:00',
1 => '2022-02-21 08:00',
2 => '2022-02-21 03:00',
3 => '2022-02-21 00:00',
但是我需要顯示所有原始陣列,所有物件。這意味著它將是與所有節點的 $tempData 相同的物件,但已排序,而不僅僅是對欄位進行排序。有人可以建議嗎?
我也試過這段代碼:
function asc_sort_json($array1,$array2){
$on = 'Timestamp';
if ($array1[$on] == $array2[$on]) {
return 0;
}
return ($array1[$on] < $array2[$on]) ? -1 : 1;
}
usort($tempData, "asc_sort_json");
并得到這個錯誤:
local.ERROR: usort() expects parameter 2 to be a valid callback, function 'asc_sort_json' not found or invalid function name {"exception":"[object] (ErrorException(code: 0): usort() expects parameter 2 to be a valid callback, function 'asc_sort_json' not found or invalid function name at
uj5u.com熱心網友回復:
$tempData = [
[
'Timestamp' => '2022-02-21 06:00',
'Date' => '2022-02-21',
'Hour' => '06',
],
[
'Timestamp' => '2022-02-21 08:00',
'Date' => '2022-02-21',
'Hour' => '08',
],
[
'Timestamp' => '2022-02-21 03:00',
'Date' => '2022-02-21',
'Hour' => '03',
],
[
'Timestamp' => '2022-02-21 00:00',
'Date' => '2022-02-21',
'Hour' => '00',
],
];
$Timestamp = array_column($tempData, 'Timestamp');
array_multisort($Timestamp, SORT_DESC, $tempData);
print_r($tempData);
輸出:
Array
(
[0] => Array
(
[Timestamp] => 2022-02-21 08:00
[Date] => 2022-02-21
[Hour] => 08
)
[1] => Array
(
[Timestamp] => 2022-02-21 06:00
[Date] => 2022-02-21
[Hour] => 06
)
[2] => Array
(
[Timestamp] => 2022-02-21 03:00
[Date] => 2022-02-21
[Hour] => 03
)
[3] => Array
(
[Timestamp] => 2022-02-21 00:00
[Date] => 2022-02-21
[Hour] => 00
)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/430967.html
上一篇:重新排列陣列,最大的偉大
