php 整形 字符串排序,php-通过特定的字符串值进行排序
发布日期:2021-06-24 12:27:09 浏览次数:3 分类:技术文章

本文共 1570 字,大约阅读时间需要 5 分钟。

我有一系列产品.每个产品都是关联数组,并且具有ID,语言类型和产品类型ID.

[1] => ["1", "en", "1"],

[2] => ["3", "fr", "1"],

[3] => ["7", "es", "1"],

[4] => ["2", "en", "2"],

[5] => ["4", "fr", "2"],

[6] => ["6", "es", "2"],

[7] => ["8", "en", "3"],

[8] => ["5", "ru", "3"],

我已经用usort对具有产品ID的数组进行了排序

usort($data, function ($a, b) {

return ($a['product_type_id'] - $b['product_type_id']);

});

我想按产品类型ID对所有内容进行排序,然后我还希望所有语言ID为“ en”的商品都出现在开头.

[1] => ["1", "en", "1"],

[2] => ["2", "en", "2"],

[3] => ["8", "en", "3"],

[4] => ["3", "fr", "1"],

[5] => ["7", "es", "1"],

[6] => ["4", "fr", "2"],

[7] => ["6", "es", "2"],

[8] => ["5", "ru", "3"],

为了达到这些目的,我以多种方式尝试了usort,但未能做到.我什至写了一个单独的usort,它使用了已排序的数组,并且仅使“ en”到顶部.排序之后,“ en”位于顶部,但产品类型的顺序被完全破坏.这是我的第二次伤害

usort($dataSortedByProductTypeId, function ($a, $b) {

if($a['language_id'] == 'en'){

if($b['language_id'] == 'en'){

return 0;

} else {

return -1;

}

} else {

return 1;

}

});

请帮忙

解决方法:

怎么样:

$array = [

['id' => '1', 'lang' => 'en', 'pid' => '1'],

['id' => '3', 'lang' => 'fr', 'pid' => '1'],

['id' => '7', 'lang' => 'es', 'pid' => '1'],

['id' => '2', 'lang' => 'en', 'pid' => '2'],

['id' => '4', 'lang' => 'fr', 'pid' => '2'],

['id' => '6', 'lang' => 'es', 'pid' => '2'],

['id' => '8', 'lang' => 'en', 'pid' => '3'],

['id' => '6', 'lang' => 'ru', 'pid' => '3']

];

usort($array, function ($a, $b) {

if ($a['lang'] == $b['lang']) {

return ($a['pid'] - $b['pid']);

}

if ($a['lang'] == 'en') {

return -1;

} elseif ($b['lang'] == 'en') {

return 1;

} else {

return ($a['pid'] - $b['pid']);

}

});

标签:arrays,php,sorting

来源: https://codeday.me/bug/20191118/2032058.html

转载地址:https://blog.csdn.net/weixin_32697149/article/details/115436833 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...
下一篇:vue项目结构php写哪里,Vue-cli搭建项目后目录结构的分析(图文)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月03日 15时05分33秒