【发布时间】:2014-10-25 12:48:24
【问题描述】:
我有一个数组,我需要按另一个数组排序,形成 2 个字段的邮政编码并批准
我可以按邮政编码对其进行排序,但无法使用已批准的字段进行排序,例如
我需要按 60007,60001,60003,60002 排序 (按照排序顺序) 所有来自 60007 并获得批准的邮政编码都应该排在第一位,所以
$sortLike=array(60007,60001,60003,60002);
$array1= array(
array ('ID' => 138,'zip_code' => 60007,'approved' => 1),
array('ID' => 103,'zip_code' => 60007,'approved' => 0),
array('ID' => 114,'zip_code' => 60007,'approved' => 1),
array('ID' => 105,'zip_code' => 60003,'approved' => 0),
array('ID' => 124,'zip_code' => 60002,'approved' => 0)
)
所以 60007 和 aproved 应该比 60007 和 0(未批准)和所有 60001 批准比所有 60001 未批准(依此类推$sortlike)这里是完整的 php 代码
<?php
$array1= array(
array ('ID' => 138,'zip_code' => 60007,'approved' => 1),
array('ID' => 103,'zip_code' => 60007,'approved' => 0),
array('ID' => 114,'zip_code' => 60007,'approved' => 1),
array('ID' => 105,'zip_code' => 60003,'approved' => 0),
array('ID' => 124,'zip_code' => 60002,'approved' => 0),
array('ID' => 104,'zip_code' => 60002,'approved' => 1),
array('ID' => 106,'zip_code' => 60001,'approved' => 0),
array('ID' => 188,'zip_code' => 60022,'approved' => 0),
array('ID' => 184,'zip_code' => 60022,'approved' => 1),
);
function sort_results ($a, $b) {
$sortLike=array(60007,60001,60003,60002);
if (!in_array ($a['zip_code'], $sortLike)) { return 1; } // Push unknown values at the end of the array
return array_search($a['zip_code'], $sortLike) > array_search($b['zip_code'], $sortLike);
}
usort ($array1, 'sort_results');
echo "<pre>";
print_r($array1);
echo "</pre>";
【问题讨论】:
标签: php arrays sorting multidimensional-array usort