PHP数组循环问题, 数组是:
Array([0]=>Array([title]=>第一个[url]=>#[desc]=>这个第一个导航[s]=>3)[1]=>Array([title]=>资料[url...
Array
(
[0] => Array
(
[title] => 第一个
[url] => #
[desc] => 这个第一个导航
[s] => 3
)
[1] => Array
(
[title] => 资料
[url] => #
[desc] => 殷海萨的资料,用于储存学习资料和记录信息
[s] => 2
)
[2] => Array
(
[title] => 视频
[url] =>#
[desc] => 殷海萨的视频,用于储存和播放视频
[s] => 3
)
)
把这个数组按照S的值 从小到大排序,
哥哥姐姐们帮忙啊
数组是网页中得导航列表,
但这个导航列表的数据有来自 自定义导航数据表的数据,
也有来自内部模块的数据,所以S(顺序值)会重复,
如果把S值做键,会丢数组,这个改怎么排序呀,
这个数组的来源是。
//列表查询方法,返回while数据表数组
function ehs_data_lists($dname,$table,$where){
$list_row=$this->ehs_db_select($dname,$table,$where);
while ($list_rows=mysql_fetch_assoc($list_row)){
$list[]=$list_rows;
};
return $list;
}
//顶部导航查询
function ehs_web_top(){
$mod=$this->ehs_data_lists('*', 'module', "ORDER BY s ASC");
$nav=$this->ehs_data_lists('*', 'navigation', "ORDER BY s ASC");
foreach ($nav as $vn){
$top[]=array('title'=>$vn['title'],'url'=>$vn['url'],'desc'=>$vn['desc'],'s'=>$vn['s']);
}
foreach ($mod as $vm){
$top[]=array('title'=>$vm['title'],'url'=>$this->ehs_module_re($vm['name']),
'desc'=>$vm['desc'],'s'=>$vm['s']);
}
return $top;
} 展开
(
[0] => Array
(
[title] => 第一个
[url] => #
[desc] => 这个第一个导航
[s] => 3
)
[1] => Array
(
[title] => 资料
[url] => #
[desc] => 殷海萨的资料,用于储存学习资料和记录信息
[s] => 2
)
[2] => Array
(
[title] => 视频
[url] =>#
[desc] => 殷海萨的视频,用于储存和播放视频
[s] => 3
)
)
把这个数组按照S的值 从小到大排序,
哥哥姐姐们帮忙啊
数组是网页中得导航列表,
但这个导航列表的数据有来自 自定义导航数据表的数据,
也有来自内部模块的数据,所以S(顺序值)会重复,
如果把S值做键,会丢数组,这个改怎么排序呀,
这个数组的来源是。
//列表查询方法,返回while数据表数组
function ehs_data_lists($dname,$table,$where){
$list_row=$this->ehs_db_select($dname,$table,$where);
while ($list_rows=mysql_fetch_assoc($list_row)){
$list[]=$list_rows;
};
return $list;
}
//顶部导航查询
function ehs_web_top(){
$mod=$this->ehs_data_lists('*', 'module', "ORDER BY s ASC");
$nav=$this->ehs_data_lists('*', 'navigation', "ORDER BY s ASC");
foreach ($nav as $vn){
$top[]=array('title'=>$vn['title'],'url'=>$vn['url'],'desc'=>$vn['desc'],'s'=>$vn['s']);
}
foreach ($mod as $vm){
$top[]=array('title'=>$vm['title'],'url'=>$this->ehs_module_re($vm['name']),
'desc'=>$vm['desc'],'s'=>$vm['s']);
}
return $top;
} 展开
1个回答
展开全部
不知道你的DB类支不支持SQL语句,这种查询,可以直接用SQL语句获取排序好的内容。
SELECT *
FROM ( SELECT * FROM `module` UNION ALL SELECT * FROM `navigation` ) tb
ORDER BY td.s asc;
如果不支持,那就麻烦点啦,合并数据之后。
定义一个排序方法
function sortS($a, $b){
if($a['s'] == $b['s']){
return 0;
}
return ($a['s'] < $b['s']) ? -1 : 1;
}
然后 usort($top, "sortS"); 就可以了
SELECT *
FROM ( SELECT * FROM `module` UNION ALL SELECT * FROM `navigation` ) tb
ORDER BY td.s asc;
如果不支持,那就麻烦点啦,合并数据之后。
定义一个排序方法
function sortS($a, $b){
if($a['s'] == $b['s']){
return 0;
}
return ($a['s'] < $b['s']) ? -1 : 1;
}
然后 usort($top, "sortS"); 就可以了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询