[英]Sort multidimensional array prioritising substring
我有一个多维数组可以使用并在PHP中排序。 我正在尝试按product_code键对其进行排序。 阵列需要安排
这是我有的数组
Array
(
[0] => Array
(
[product_name] => Stellar
[product_code] => C5311.01
)
[1] => Array
(
[product_name] => Luigi
[product_code] => C5310.02
)
[2] => Array
(
[product_name] => Apple
[product_code] => C5310.01
)
[3] => Array
(
[product_name] => Quietly
[product_code] => C5311.02
)
)
这需要分类为:
Array
(
[0] => Array
(
[product_name] => Apple
[product_code] => C5310.01
)
[1] => Array
(
[product_name] => Stellar
[product_code] => C5311.01
)
[2] => Array
(
[product_name] => Luigi
[product_code] => C5310.02
)
[3] => Array
(
[product_name] => Quietly
[product_code] => C5311.02
)
)
我认为先按product_code键对数组进行排序,然后再使用usort对子字符串进行排序将为我带来令人满意的结果,但是我错了。 也许我太努力了。
任何帮助将不胜感激。 提前致谢。
我认为usort
实际上是您所需要的,但是我认为您使用它的方式是错误的。 如果需要排序
- 按product_code的最后两个字符的升序排列
- 然后以'。'前面的字符的升序排列。 产品代码
只需编写一个执行此操作的函数并将其传递给usort
:
function cmp($a,$b){
$lastTwoDigitsCmp=strcmp(substr($a["product_code"], -2), substr($b["product_code"], -2));
if($lastTwoDigitsCmp==0)
return strcmp($a["product_code"],$b["product_code"]);
else
return $lastTwoDigitsCmp;
}
这应该做的工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.