Php 需要按标题值按ASC或DESC顺序对数组排序
下面是我的数组Php 需要按标题值按ASC或DESC顺序对数组排序,php,arrays,sorting,Php,Arrays,Sorting,下面是我的数组 Array ( [0] => Array ( [topic_title] => gff [title] => gff ) [1] => Array ( [topic_title] => new toipic [title] => new toipic ) [2] => Array ( [topic
Array
(
[0] => Array
(
[topic_title] => gff
[title] => gff
)
[1] => Array
(
[topic_title] => new toipic
[title] => new toipic
)
[2] => Array
(
[topic_title] => Welcome!
[title] =>Welcome!
)
[3] => Array
(
[entry_title] => sdasdad
[title] => sdasdad
)
[4] => Array
(
[event_title] => red
[title] => red
)
[5] => Array
(
[event_title] => sa
[title] => sa
)
[6] => Array
(
[event_title] => sadasd
[title] => sadasd
)
[7] => Array
(
[event_title] => Test Event
[title] => Test Event
)
)
我希望输出如下
Array(
[0] => Array
(
[event_title] => Test Event
[title] => Test Event
)
[1] => Array
(
[event_title] => Welcome!
[title] => Welcome!
)
[2] => Array
(
[event_title] => sa
[title] => sa
)
[3] => Array
(
[entry_title] => sdasdad
[title] => sdasdad
)
[4] => Array
(
[event_title] => sadasd
[title] => sadasd
)
[5] => Array
(
[event_title] => red
[title] => red
)
[6] => Array
(
[topic_title] => new toipic
[title] => new toipic
)
[7] => Array
(
[topic_title] => gff
[title] => gff
)
)
这是PHP5.6中的打印代码
我使用了usort()函数,但没有得到必需的函数。我无法按数组的标题键按同意或降序对数组进行排序
我从不同的查询中得到这个数组,然后我将它合并到一个数组中,但无法按标题值对其进行排序,这将起到以下作用:
usort($array, function($x, $y) {
return strcasecmp($x['title'], $y['title']);
});
您可以使用array_multisort()来实现所需的结果 例如 试试这个:
$array = Array ( Array("topic_title" => "aatoipic","title" => "new toipic"),Array("event_title" => "Test Event","title" => "Test Event"),Array("topic_title" => "Welcome!", "title" => "Welcome!"),Array("entry_title" => "sdasdad","title" => "p",),Array("event_title" => "red","title" => "k",),Array("event_title" => "sa","title" => "sa"),Array("event_title" => "sadasd","title" => "d"),Array("topic_title" => "gff", "title" => "gff"),Array( "topic_title" => "new toipic","title" => "h"));
$arr = $array;
$sort = array();
foreach($arr as $k=>$v) {
$sort['title'][$k] = $v['title'];
}
array_multisort($sort['title'], SORT_ASC, $arr);
echo "<pre>";
print_r($arr);
您需要将
usort
用于:
我从不同的查询中得到
。。。如果这个数组/数据的源是SQL数据库,那么我认为我们应该在数据库中进行排序,而不是在PHP代码中。请包括相关查询。如何才能“欢迎”代码>在'Test Event'
之后,但是'red'
在'sa'
之后?@Nick实际上他合并了来自两个查询的两个数组,并将它们按排序方式放入他想要的输出中。这就是为什么它是confusing@AlivetoDie特别是由于无法看到一个查询的结束和下一个查询的开始…首先使用usort()添加代码并编辑问题以判断失败的位置我使用此代码,但仍然无法获得正确的输出数组([0]=>sdasad[1]=>sadasd[2]=>sa[3]=>red[4]=>新toipic[5]=>新toipic[6]=>新toipic[7]=>gff[8]=>新toipic[9]=>欢迎![10]=>测试事件)
这不在order@Harsh显示查询代码以及将查询结果分配给数组的代码。我使用foreach($key=>post as$row){$title[$key]=$row['title'];}数组\u multisort($title,SORT\u DESC,$post);回声“;印刷品(标题)
@Harsh为什么要打印$title
?使用array\u multisort
后,您的主数组$post
将按降序排列所有标题。我尝试打印$post,但仍然无法按标题(字母)排序。我的数组是$post=array(数组(“主题”=>“aatopic”,“标题”=>“新topic”),数组(“事件”=>“测试事件”,“标题”=>“测试事件”)、数组(“主题标题”=>“欢迎!”、“标题”=>“欢迎!”、数组(“条目标题”=>“SDSDAD”、“标题”=>“p”)、数组(“事件标题”=>“红色”、“标题”=>“k”)、数组(“事件标题”=>“sa”、“标题”=>“sa”)、数组(“事件标题”=>“sadasd”、“标题”=>“d”)、数组(“主题标题”=>“gff”、“标题”=>“gff”)、数组(“主题标题”=>“新toipic”、”标题“=>“h”);
让我检查一下first@Harsh除非您显示查询代码以及如何创建数组,否则我不会使用上面的数组,但不会使用排序数组,我的数组如下`$arr=array(array(“topic”=>“aatoipic”,“title”=>“new toipic”)、array(“event”=>“Test event”,“title”=>“Test event”)、array(“主题标题“=>“欢迎!”、“标题”=>“欢迎!”、数组(“条目标题”=>“SDADSAD”、“标题”=>“p”)、数组(“事件标题”=>“红色”、“标题”=>“k”)、数组(“事件标题”=>“sa”、“标题”=>“sa”)、数组(“事件标题”=>“sadasd”、“标题”=>“d”)、数组(“主题标题”=>“gff”、“标题”=>“gff”)、数组(“主题标题”=>“新toipic”、“标题”=>“h”)“但是你的输出不是按字母顺序排列的,我要按字母顺序排列标题
$array = Array ( Array("topic_title" => "aatoipic","title" => "new toipic"),Array("event_title" => "Test Event","title" => "Test Event"),Array("topic_title" => "Welcome!", "title" => "Welcome!"),Array("entry_title" => "sdasdad","title" => "p",),Array("event_title" => "red","title" => "k",),Array("event_title" => "sa","title" => "sa"),Array("event_title" => "sadasd","title" => "d"),Array("topic_title" => "gff", "title" => "gff"),Array( "topic_title" => "new toipic","title" => "h"));
$arr = $array;
$sort = array();
foreach($arr as $k=>$v) {
$sort['title'][$k] = $v['title'];
}
array_multisort($sort['title'], SORT_ASC, $arr);
echo "<pre>";
print_r($arr);
Array ( [0] => Array ( [event_title] => Test Event [title] => Test Event ) [1] => Array ( [topic_title] => Welcome! [title] => Welcome! ) [2] => Array ( [event_title] => sadasd [title] => d ) [3] => Array ( [topic_title] => gff [title] => gff ) [4] => Array ( [topic_title] => new toipic [title] => h ) [5] => Array ( [event_title] => red [title] => k ) [6] => Array ( [topic_title] => aatoipic [title] => new toipic ) [7] => Array ( [entry_title] => sdasdad [title] => p ) [8] => Array ( [event_title] => sa [title] => sa ) )
function querySort ($x, $y) {
return strcasecmp($x['title'], $y['title']);
}
usort($myArray, 'querySort');