This is a collection of questions that come up every now and then about syntax in PHP. This is also a Community Wiki, so everyone is invited to participate in maintaining this list.
It used to be hard to find questions about operators and other syntax tokens.¹
The main idea is to have links to existing questions on Stack Overflow, so it's easier for us to reference them, not to copy over content from …
此问题旨在作为有关在PHP中排序数组的问题的参考.很容易认为您的特定情况是独一无二的,值得一个新问题,但大多数实际上是本页面上其中一个解决方案的微小变化.
如果您的问题与此问题的副本相同,请仅在您能够解释为何与以下所有问题明显不同时才要求重新打开您的问题.
如何在PHP中对数组进行排序?
如何在PHP中对复杂数组进行排序?
如何在PHP中对对象数组进行排序?
有关使用PHP现有函数的实际答案,请参阅1.,有关排序算法的学术详细答案(PHP的函数实现以及您可能需要哪些非常复杂的案例),请参阅参考资料2.
我将CSV数据加载到多维数组中.这样,每个"行"都是一个记录,每个"列"包含相同类型的数据.我正在使用下面的函数加载我的CSV文件.
function f_parse_csv($file, $longest, $delimiter)
{
$mdarray = array();
$file = fopen($file, "r");
while ($line = fgetcsv($file, $longest, $delimiter))
{
array_push($mdarray, $line);
}
fclose($file);
return $mdarray;
}
Run Code Online (Sandbox Code Playgroud)
我需要能够指定要排序的列,以便重新排列行.其中一列包含格式为的日期信息,Y-m-d H:i:s我希望能够以最近的日期为第一行进行排序.
function foo () {
global $var;
// rest of code
}
Run Code Online (Sandbox Code Playgroud)
在我的小PHP项目中,我通常采用程序方式.我通常有一个包含系统配置的变量,当我需要在函数中访问此变量时,我会这样做global $var;.
这是不好的做法吗?
我试图通过多个键对多维数组进行排序,我不知道从哪里开始.我看着uasort,但不太确定如何为我需要的东西编写函数.
我需要按州,然后是event_type,然后按日期排序.
我的数组看起来像这样:
Array
(
[0] => Array
(
[ID] => 1
[title] => Boring Meeting
[date_start] => 2010-07-30
[time_start] => 06:45:PM
[time_end] =>
[state] => new-york
[event_type] => meeting
)
[1] => Array
(
[ID] => 2
[title] => Find My Stapler
[date_start] => 2010-07-22
[time_start] => 10:45:AM
[time_end] =>
[state] => new-york
[event_type] => meeting
)
[2] => Array
(
[ID] => 3
[title] => Mario Party
[date_start] => 2010-07-22
[time_start] => 02:30:PM
[time_end] => 07:15:PM
[state] => …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在PHP中对数组和数据进行排序?
如何在
PHP中排序多维数组PHP排序数组按SubArray值PHP 按值
排序多维数组
我的数组看起来像:
Array(
[0] => Array(
[name] => Bill
[age] => 15
),
[1] => Array(
[name] => Nina
[age] => 21
),
[2] => Array(
[name] => Peter
[age] => 17
)
);
Run Code Online (Sandbox Code Playgroud)
我想根据他们的名字按字母顺序对它们进行排序.我看到PHP排序数组按SubArray值,但它没有多大帮助.任何想法如何做到这一点?
我有这个数组
Array
(
[data] => Array
(
[0] => Array
(
[id] => 1293005125
[viewed] => TRUE
[active] => TRUE
[time] => December 22, 2010 13:00 hours
[timestamp] => 1293006034
[initial_timestamp] => 1293005125
[user] => administrator
)
[1] => Array
(
[mid] => 1293001908
[viewed] => TRUE
[active] => TRUE
[time] => December 22, 2010 13:00 hours
[timestamp] => 1293001908
[initial_timestamp] => 1293001908
[user] => administrator
)
[2] => Array
(
[mid] => 1293009999
[viewed] => TRUE
[active] => TRUE …Run Code Online (Sandbox Code Playgroud) 如何重新排列这样的对象数组:
[495] => stdClass Object
(
[date] => 2009-10-31 18:24:09
...
)
[582] => stdClass Object
(
[date] => 2010-2-11 12:01:42
...
)
...
Run Code Online (Sandbox Code Playgroud)
通过date关键,最古老的第一?
当我尝试从这里应用以下代码
usort($myArray, function($a, $b) {
return $a['order'] - $b['order'];
});
Run Code Online (Sandbox Code Playgroud)
它以升序给出了结果.
输出:
0
0
0
0
0
0.29
1.09
6.33
Run Code Online (Sandbox Code Playgroud)
在交换$ a和$ b时,除了一个值之外,它按降序给出结果
usort($myArray, function($a, $b) {
return $b['order'] - $a['order'];
});
Run Code Online (Sandbox Code Playgroud)
输出:
6.33
1.09
0
0
0
0
0.29
0
Run Code Online (Sandbox Code Playgroud)
我想按以下顺序得到结果:
6.33
1.09
0.29
0
0
0
0
0
Run Code Online (Sandbox Code Playgroud)
我如何实现同样的目标.
我想基于count降序对这个数组进行排序.这是我的array
array(
46 =>
array (
'name' => 'HSR Layout',
'url' => 'hsr-layout',
'count' => 2,
),
37 =>
array (
'name' => 'Electronic City',
'url' => 'electronic-city',
'count' => 3,
)
)
Run Code Online (Sandbox Code Playgroud)