根据另一个数组对PHP数组进行排序(使用substr(“ String”,-3,1)函数) [英] Sort PHP Array based on another Array (using substr("String",-3,1) function)

查看:69
本文介绍了根据另一个数组对PHP数组进行排序(使用substr(“ String”,-3,1)函数)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类似的数组:

$unsorted = Array(
"0" =>"3470U11",
"1" =>"3470E11",
"2" =>"3470S13",
"3" =>"3470G11",
"4" =>"3470S12",
"5" =>"3470S11",
"6" =>"3470E12",
"7" =>"3470U12",
"8" =>"3470G13",
"9" =>"3470G12",
"10" =>"3470E13",
"11" =>"3470U13"
);

$sortBy = array('G','D','S','U','E','T','A','L');

我需要按 substr($ value,-3 ,1)按照 $ sortBy 中列出的顺序,因此结果如下:

I need to sort the array by the substr($value,-3,1) in the order listed in $sortBy so the result becomes like:

$sorted = Array(
"0" => "3470G11",
"1" => "3470G12",
"2" => "3470G13",
"3" => "3470S11",
"4" => "3470S12",
"5" => "3470S13",
"6" => "3470U11",
"7" => "3470U12",
"8" => "3470U13",
"9" => "3470E11",
"10" =>"3470E12",
"11" =>"3470E13"
);


推荐答案

usort

(PHP 4,PHP 5,PHP 7)
usort —使用用户定义的比较函数按值对数组进行排序

(PHP 4, PHP 5, PHP 7) usort — Sort an array by values using a user-defined comparison function

<?php
$unsorted = Array(
"0" =>"3470U11",
"1" =>"3470E11",
"2" =>"3470S13",
"3" =>"3470G11",
"4" =>"3470S12",
"5" =>"3470S11",
"6" =>"3470E12",
"7" =>"3470U12",
"8" =>"3470G13",
"9" =>"3470G12",
"10" => "s3470E13",
"11" => "s3470U13"
);

//$a and $b -> two elts of the array
function cmp ($a,$b){

	$substring_a = substr($a, -3,1);
	$substring_b = substr($b, -3,1);
	
	$sortArr = array('G','D','S','U','E','T','A','L');
	
	$key_a = array_search($substring_a, $sortArr);
	$key_b = array_search($substring_b, $sortArr);
	
	if($key_a == $key_b){
		return strcmp(substr($a, -2),substr($b, -2));
		
	}	
	return $key_a > $key_b;

}

usort($unsorted, "cmp");
print_r($unsorted);

这篇关于根据另一个数组对PHP数组进行排序(使用substr(“ String”,-3,1)函数)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆