在php中按两个以上字段对多维数组排序
我想按两个字段对数组进行排序。我的意思是说我有一个数组,比如:-在php中按两个以上字段对多维数组排序,php,Php,我想按两个字段对数组进行排序。我的意思是说我有一个数组,比如:- Array ( [0] => Array ( [name] => abc [url] => http://127.0.0.1/abc/img1.png [count] => 69 [img] => accessoire-sets_1.jpg ) [1] => Array ( [name]
Array
(
[0] => Array
(
[name] => abc
[url] => http://127.0.0.1/abc/img1.png
[count] => 69
[img] => accessoire-sets_1.jpg
)
[1] => Array
(
[name] => abc2
[url] => http://127.0.0.1/abc/img12.png
[count] => 73
[img] =>
)
[2] => Array
(
[name] => abc45
[url] => http://127.0.0.1/abc/img122.png
[count] => 15
[img] => tomahawk-kopen_1.png
)
[3] => Array
(
[name] => zyz
[url] => http://127.0.0.1/abc/img22.png
[count] => 168
[img] =>
)
[4] => Array
(
[name] => lmn
[url] => http://127.0.0.1/abc/img1222.png
[count] => 10
[img] =>
)
[5] => Array
(
[name] => qqq
[url] => http://127.0.0.1/abc/img1222.png
[count] => 70
[img] =>
)
[6] => Array
(
[name] => dsa
[url] => http://127.0.0.1/abc/img1112.png
[count] => 43
[img] =>
)
[7] => Array
(
[name] => wer
[url] => http://127.0.0.1/abc/img172.png
[count] => 228
[img] =>
)
[8] => Array
(
[name] => hhh
[url] => http://127.0.0.1/abc/img126.png
[count] => 36
[img] =>
)
[9] => Array
(
[name] => rrrt
[url] => http://127.0.0.1/abc/img12.png
[count] => 51
[img] =>
)
[10] => Array
(
[name] => yyy
[url] => http://127.0.0.1/abc/img12.png
[count] => 22
[img] =>
)
[11] => Array
(
[name] => cxz
[url] => http://127.0.0.1/abc/img12.png
[count] => 41
[img] =>
)
[12] => Array
(
[name] => tre
[url] => http://127.0.0.1/abc/img12.png
[count] => 32
[img] =>
)
[13] => Array
(
[name] => fds
[url] => http://127.0.0.1/abc/img12.png
[count] => 10
[img] =>
)
)
不带图像的阵列(字段“img”)应始终放置在带图像的阵列下方。在此之后,将根据数组中的产品数量(字段计数)进行排序
意味着我必须首先根据img显示排序数组,然后再显示计数
我正在使用
usort( $childLinkCats, 'sortempty' );`
function sortempty( $a, $b ) {
return empty( $a['img'] );
}
它将显示图像值高于包含空值的数组
并通过我使用的计数进行排序
usort($childLinkCats, "_sortByCount");
function _sortByCount($a, $b) {
return strnatcmp($a['count'], $b['count']);
}
按计数它将短缺
但我面临的问题是,一次只能工作一个,但我必须同时使用这两个,请帮助我 编写一个调用两个比较函数的函数:
usort($childLinkCats, function($a, $b) {
if (empty($a['img']) == empty($b['img'])) {
return _sortByCount($a, $b);
} else {
return sortempty($a, $b);
}
});
您需要确保
\u sortByCount
和sortempty
返回正确的值。比较函数必须返回-1、0或1,而不是true或false。比较函数应返回<0、0或>0,您只是返回一个布尔值。它将仅按图像空值进行缩短。我想同时使用这两种排序,如何获得所需结果。它仅按计数排序。首先,我想用img值显示数组,并按计数排序,然后它将用img值显示数组为null,这也按计数排序。我想要求会很明确,我忘了使用['img']
来获取图像。