PHP中的数组排序有多种方式
发布时间:2020-12-13 16:56:00 所属栏目:PHP教程 来源:网络整理
导读:我有两个数组例如 数组1: Array( [id] = 50575 [name] = Funbox - Pirates and Princesses [venue_id] = 3248) 数组2: Array( [0] = Array ( [id] = 53295 [name] = Funbox - Pirates and Princesses [venue_id] = 2954 ) [1] = Array ( [id] = 53323 [nam
我有两个数组例如
数组1: Array( [id] => 50575 [name] => Funbox - Pirates and Princesses [venue_id] => 3248 ) 数组2: Array ( [0] => Array ( [id] => 53295 [name] => Funbox - Pirates and Princesses [venue_id] => 2954 ) [1] => Array ( [id] => 53323 [name] => Funbox - Pirates and Princesses [venue_id] => 2954 ) [2] => Array ( [id] => 53391 [name] => Funbox - Pirates and Princesses [venue_id] => 2954 ) [3] => Array ( [id] => 53402 [name] => Funbox - Pirates and Princesses [venue_id] => 2954 ) [4] => Array ( [id] => 57130 [name] => Funbox - Pirates and Princesses [venue_id] => 2980 ) [5] => Array ( [id] => 57142 [name] => Funbox - Pirates and Princesses [venue_id] => 3248 ) [6] => Array ( [id] => 50575 [name] => Funbox - Pirates and Princesses [venue_id] => 3248 ) [7] => Array ( [id] => 50601 [name] => Funbox - Pirates and Princesses [venue_id] => 3248 ) [8] => Array ( [id] => 56113 [name] => Funbox - Pirates and Princesses [venue_id] => 2882 ) ) 数组1将是数组2中的任何一个子数组, 现在我希望在数组2中第一个数组应该是数组1的那个,之后那些具有与数组1地址id相同的场地ID的子数组应该存在,然后是所有其他数组. 预期产量: Array ( [6] => Array ( [id] => 50575 [name] => Funbox - Pirates and Princesses [venue_id] => 3248 ) [5] => Array ( [id] => 57142 [name] => Funbox - Pirates and Princesses [venue_id] => 3248 ) [7] => Array ( [id] => 50601 [name] => Funbox - Pirates and Princesses [venue_id] => 3248 ) [0] => Array ( [id] => 53295 [name] => Funbox - Pirates and Princesses [venue_id] => 2954 ) [1] => Array ( [id] => 53323 [name] => Funbox - Pirates and Princesses [venue_id] => 2954 ) [2] => Array ( [id] => 53391 [name] => Funbox - Pirates and Princesses [venue_id] => 2954 ) [3] => Array ( [id] => 53402 [name] => Funbox - Pirates and Princesses [venue_id] => 2954 ) [4] => Array ( [id] => 57130 [name] => Funbox - Pirates and Princesses [venue_id] => 2980 ) [8] => Array ( [id] => 56113 [name] => Funbox - Pirates and Princesses [venue_id] => 2882 ) ) 解决方法
您可以使用
usort将其排序为示例订单.
function cmp($a,$b) { return $b["venue_id"] - $a["venue_id"]; } usort($array2,"cmp"); 所有这一切都是由venue_id降序排序.因此,具有相同venue_id的所有数组将被分组,最高的venue_id位于顶部.如果你想要别的东西,你的答案有点不清楚. 编辑:我已经考虑了这个问题,并提出了一个应该做我认为你要求的功能.它并不完美,但应该有效. function customSort($array1,$array2) { global $primaryVenue_id; $primaryVenue_id = $array1["venue_id"]; function cmp($a,$b) { global $primaryVenue_id; if ($a["venue_id"] == $primaryVenue_id) return -1; elseif ($b["venue_id"] == $primaryVenue_id) return 1; else return $b["venue_id"] - $a["venue_id"]; } usort($array2,"cmp"); unset($primaryVenue_id); return $array2; } 基本上,如果你调用函数customSort($array1,$array2),它将返回$array2,所有子数组首先包含与$array1相同的venue_id,然后是id的其余降序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |