Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何对数组中的5个特定值进行排序?_Php_Arrays_Sorting - Fatal编程技术网

PHP:如何对数组中的5个特定值进行排序?

PHP:如何对数组中的5个特定值进行排序?,php,arrays,sorting,Php,Arrays,Sorting,我有一个数组。看起来是这样的: [1=Name][2=Type][3=Company][4=State][5=Date] [6=Name][7=Type][8=Company][9=State][10=Date] [11=Name][12=Type][13=Company][14=State][15=Date] $arr=array("1" => "name1", "2" => "game4", "3" => "game10", "4" => "game2",

我有一个数组。看起来是这样的:

[1=Name][2=Type][3=Company][4=State][5=Date]

[6=Name][7=Type][8=Company][9=State][10=Date]

[11=Name][12=Type][13=Company][14=State][15=Date]
$arr=array("1" => "name1", "2" => "game4", "3" => "game10", "4" => "game2",
   "5" => "game3", "6" => "name4", "7" => "game4", "8" => "game10",
   "9" => "game2", "10" => "game3", "11" => "name3", "12" => "game4",
   "13" => "game10", "14" => "game2", "15" => "game3");
$narr = array();
for ($i=0; $i<count($arr)/5; $i++)
   $narr[] = array_slice($arr, $i * 5, 5, true);
function cmp($a, $b) {
    return strcmp(reset($a), reset($b));
}
uasort($narr, 'cmp');
print_r($narr);
现在我想按名称按A-Z顺序对每5个值进行排序。因此,
[1=Name][2=Type][3=Company][4=State][5=Date]
将被视为需要排序的一行,
[6=Name][7=Type][8=Company][9=State][10=Date]
将被视为第二行。它们需要按名称排序,
[1]
&
[6]

我从未遇到过这样的情况,因此我努力寻找解决方案


有什么想法吗?

问题不太清楚,请提供一些明确的预期产出示例。无论我理解什么,您都可以尝试以下代码:

[1=Name][2=Type][3=Company][4=State][5=Date]

[6=Name][7=Type][8=Company][9=State][10=Date]

[11=Name][12=Type][13=Company][14=State][15=Date]
$arr=array("1" => "name1", "2" => "game4", "3" => "game10", "4" => "game2",
   "5" => "game3", "6" => "name4", "7" => "game4", "8" => "game10",
   "9" => "game2", "10" => "game3", "11" => "name3", "12" => "game4",
   "13" => "game10", "14" => "game2", "15" => "game3");
$narr = array();
for ($i=0; $i<count($arr)/5; $i++)
   $narr[] = array_slice($arr, $i * 5, 5, true);
function cmp($a, $b) {
    return strcmp(reset($a), reset($b));
}
uasort($narr, 'cmp');
print_r($narr);

迭代数组并使用array_slice()函数对数组的每个“行/行”进行排序。除非您是从其他地方获取此数组,否则应考虑使用矩阵(即数组数组)或对象数组来保存该数据。这将大大简化您的模型和处理它所需的任何代码,包括排序。我想按名称对数组进行排序([1],[6],[11]上面的代码仅按元素对原始数组进行排序。
[1],[6],[11]
。正如您可以看到的那样,原始数组有
name1,name4,name3
,排序后的数组有
name1,name3,name4