您的位置 首页 php

PHP 对数组中的指定下标的值大小进行排序,json_encode使用注意

第一种方法:

$b = array(

array(‘name’=>’北京’,’nums’=>’200′),

array(‘name’=>’上海’,’nums’=>0),

array(‘name’=>’广州’,’nums’=>’50’),

array(‘name’=>’深圳’,’nums’=>’70’)

);

$a = array();

//取出数组中要排序的值放置新数组中

foreach ($b as $key=>$val){

//去除掉值为0的数据

if($val[‘nums’]){

$a[] = $val[‘nums’];

}

}

// var_dump($a);

//对新数组进行排序 很重要 如果不排序下面的循环赋值还是没有顺序

sort($a);

// var_dump($a);

//键值互换

$a = array_flip($a);

$result = array();

//循环原数组

foreach($b as $k=>$v){

//找到原数组中的数值

$temp1 = $v[‘nums’];

//过滤掉为0的值

if($temp1){

//通过原数组中的数值查询出他的下标

$temp2 = $a[$temp1];

//result[2]=200; result[0]=50; …….

$result[$temp2] = $v;

}

}

//这里还要把$result重新以键的大小进行排序

ksort($result);

var_dump($result);

第二种方法:

//把数组的值重新付给一个新数组

foreach ($b as $key => $value) {

$rating[$key] = $value[‘nums’];

}

//通过PHP系统函数对数组进行排序 正序 倒序都可以

// array_multisort($rating, SORT_DESC, $b);

array_multisort($rating, SORT_ASC, $b);

//输出排序好后的数组

var_dump($b);

重要提示:

如果你想要把数据进行 json _encode 一定要注意当从大到小排序时json会自动增加下标,可能导致前台无法使用该json串,所以从新对数组排下序即可。(使用第二种方法自动排序了不需要再排序)

如:这个json串前端有可能解析不了{“2”:{“name”:”\u5317\u4eac”,”nums”:”200″},”1″:{“name”:”\u6df1\u5733″,”nums”:”70″},”0″:{“name”:”\u5e7f\u5dde”,”nums”:”50″}}

一定要去掉变成下面这种。

[{“name”:”\u5e7f\u5dde”,”nums”:”50″},{“name”:”\u6df1\u5733″,”nums”:”70″},{“name”:”\u5317\u4eac”,”nums”:”200″}]

//数组从新排序

$i=0;

foreach($result as $v){

$res1[$i]=$v;

$i++;

}

die(json_encode($res1));

就因为这个序号导致我查询好久json串不能使用,只要去掉序号即可,这里给大家说一下,避免大家入坑。希望对大家有所帮助。

作者:吾林爱分享

文章来源:智云一二三科技

文章标题:PHP 对数组中的指定下标的值大小进行排序,json_encode使用注意

文章地址:https://www.zhihuclub.com/77808.shtml

关于作者: 智云科技

热门文章

网站地图