**
**
<前><代码>数组(5) { [0] => 数组(2){ [“id”]=> 字符串(1)“2” [“内容2”]=> 字符串(2)“XL” } [1]=> 数组(2){ [“id”]=> 字符串(1)“1” [“内容2”]=> 字符串(1)“L” } [2]=> 数组(2){ [“id”]=> 字符串(1)“3” [“内容2”]=> 字符串(3)“XXL” } [3]=> 数组(2){ [“id”]=> 字符串(1)“4” [“内容2”]=> 字符串(1)“L” } [4]=> 数组(2){ [“id”]=> 字符串(1)“5” [“内容2”]=> 字符串(2)“XL” } }阿神2017-05-16 13:09:13
PHP多维数组排序array
/**
* Sort array by filed and type, common utility method.
* @param array $data
* @param string $sort_filed
* @param string $sort_type SORT_ASC or SORT_DESC
*/
public function sortByOneField($data, $filed, $type)
{
if (count($data) <= 0) {
return $data;
}
foreach ($data as $key => $value) {
$temp[$key] = $value[$filed];
}
array_multisort($temp, $type, $data);
return $data;
}
怪我咯2017-05-16 13:09:13
写个冒泡排序不就得了。
至于 L<XL<XXL<XXL 这种,设置一个 map 映射来比较就是。
也可以用 usort
来自定义排序逻辑。参考:
http://php.net/manual/zh/func...
高洛峰2017-05-16 13:09:13
<?php
$list = [
['id'=>1,'content'=>'L'],
['id'=>2,'content'=>'XL'],
['id'=>3,'content'=>'XXL'],
['id'=>4,'content'=>'M'],
['id'=>5,'content'=>'LM'],
['id'=>6,'content'=>'XXXL'],
];
$size = [
'XXXL' => 1,
'XXL' => 2,
'XL' => 3,
'L' => 4,
'M' => 5,
'LM' => 6,
];
$temp = array();
foreach ($list as $key => $val) {
$temp[$size[$val['content']]] = $val;
}
// print_r($temp);die;
ksort($temp); // 从低到高 krsort 从高到低
print_r($temp);
?>
随便写了一下,不知道你要的是不是这个样子。