php對二維數組排序
⑴ php對二維數組怎麼按字母順序排序
有個投機取巧的方法。。。就是把listbox控制項的sort值設為true,然後把數組載入進去,最後再又上到下再載入回數組。。。
⑵ php 二維數組排序
先將二維數組轉化成一位數組,然後再用冒泡排序法
⑶ PHP里switch裡面怎樣增加默認的二維數組排序,就是直接輸出二維數組裡面定義的順序
您好,這樣:
<?php
$data = array();
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
// 取得列的列表
foreach ($data as $key => $row)
{
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
$ret = arraySort($data, 'volume', 'desc');
print_r($ret);
/**
* @desc arraySort php二維數組排序 按照指定的key 對數組進行排序
* @param array $arr 將要排序的數組
* @param string $keys 指定排序的key
* @param string $type 排序類型 asc | desc
* @return array
*/
function arraySort($arr, $keys, $type = 'asc') {
$keysvalue = $new_array = array();
foreach ($arr as $k => $v){
$keysvalue[$k] = $v[$keys];
}
$type == 'asc' ? asort($keysvalue) : arsort($keysvalue);
reset($keysvalue);
foreach ($keysvalue as $k => $v) {
$new_array[$k] = $arr[$k];
}
return $new_array;
}
?>
這個自定義函數與系統函數的一個區別就是:自定義函數只支持針對某一個key的排序,如果要支持多個key的排序需要執行多次; 而系統函數array_multisort可以一次性對多個key且可以指定多個排序規則,系統函數還是相當強大的,推薦使用系統函數,畢竟是C底層實現的,這里只是舉例說明如果通過自定義函數來對數組進行排序,當然這個自定義函數也可以繼續擴展來支持更多的排序規則。在取排名、排行榜、成績等場景中用到的還是非常多的。
⑷ php循環的二維數組如何排序
$num=$arr[$a]-18按$num排序其實就是按$arr[$a]來排,只需在循環前對$arr排序就行了。出來的結果自然是按 $num排序
<?php
$arr=array(30,15,40,38);
rsort($arr);
for($a=0; $a<4; $a++){
$num=$arr[$a]-18;
if($num>0){
$arr_1=array(array("$arr[$a]","$num"));
$num_1 = array();
foreach ($arr_1 as $arr_2) {
$num_1[] = $arr_2[1];
}
array_multisort( $num_1,SORT_DESC , $arr_1);
print_r($arr_1);
}
}
?>
⑸ 如何對PHP二維數組根據第二維某鍵值去重和排序
1 需要排序的數組如下:
$array = array(
array('name'=>'手機','brand'=>'諾基亞','price'=>1050),
array('name'=>'筆記本電腦','brand'=>'lenovo','price'=>4300),
array('name'=>'剃須刀','brand'=>'飛利浦','price'=>3100),
array('name'=>'跑步機','brand'=>'三和松石','price'=>4900),
array('name'=>'手錶','brand'=>'卡西歐','price'=>960),
array('name'=>'液晶電視','brand'=>'索尼','price'=>6299),
array('name'=>'激光列印機','brand'=>'惠普','price'=>1200)
);
2 排序的函數:
function arr_sort($array,$key,$order="asc"){//asc是升序 desc是降序
$arr_nums=$arr=array();
foreach($array as $k=>$v){
$arr_nums[$k]=$v[$key];
}
if($order=='asc'){
asort($arr_nums);
}else{
arsort($arr_nums);
}
foreach($arr_nums as $k=>$v){
$arr[$k]=$array[$k];
}
return $arr;
}
3 調用方式:
arr_sort($array,'price');
⑹ thinkPHP二維數組排序
從兩個不同的表中獲取各自的4條數據,然後整合(array_merge)成一個數組,再根據數據的創建時間降序排序取前4條。
遇到這個要求的時候就不是 ORDER BY 能解決的問題了。因此翻看 PHP 手冊查找到了如下方法,做此筆記。
廢話少說,奉上代碼,清單如下:
[php] view plain
<?php
/**
* 二維數組根據某個欄位排序
* 功能:按照用戶的年齡倒序排序
* @author ruxing.li
*/
header('Content-Type:text/html;Charset=utf-8');
$arrUsers = array(
array(
'id' => 1,
'name' => '張三',
'age' => 25,
),
array(
'id' => 2,
'name' => '李四',
'age' => 23,
),
array(
'id' => 3,
'name' => '王五',
'age' => 40,
),
array(
'id' => 4,
'name' => '趙六',
'age' => 31,
),
array(
'id' => 5,
'name' => '黃七',
'age' => 20,
),
);
$sort = array(
'direction' => 'SORT_DESC', //排序順序標志 SORT_DESC 降序;SORT_ASC 升序
'field' => 'age', //排序欄位
);
$arrSort = array();
foreach($arrUsers AS $uniqid => $row){
foreach($row AS $key=>$value){
$arrSort[$key][$uniqid] = $value;
}
}
if($sort['direction']){
array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arrUsers);
}
var_mp($arrUsers);
/*
輸出結果:
array (size=5)
0 =>
array (size=3)
'id' => int 5
'name' => string '黃七' (length=6)
'age' => int 20
1 =>
array (size=3)
'id' => int 2
'name' => string '李四' (length=6)
'age' => int 23
2 =>
array (size=3)
'id' => int 1
'name' => string '張三' (length=6)
'age' => int 25
3 =>
array (size=3)
'id' => int 4
'name' => string '趙六' (length=6)
'age' => int 31
4 =>
array (size=3)
'id' => int 3
'name' => string '王五' (length=6)
'age' => int 40
*/
⑺ PHP 二維數組內部數組的排序問題
其實和普通排序沒什麼區別的
首先你弄清楚你這個數組的結構
該怎麼寫
你這個是二維數組的形式
那麼就可以這樣寫
$data
=
array(
(1,4,3,5,6),
(2,1,6,7,2),
(5,4,2,5,1),
(4,3,2,2,3),
(7,4,3,5,6),
)
$data[key1][key2]
其中
key1
是行
比如
$data[0]就是指(1,4,3,5,6)
那麼key2
就是指這里的值了
比如說$data[0][1]
就是指的(1,4,3,5,6)中的4
因為php中數組的索引是從0開始的
這樣的話
如果你想按照你的想法去排列的話
那麼就很好實現了
你先想想
不會再說
⑻ PHP二維數組排序問題
foreach($allInfoas$_v){
$time[]=(int)$_v->sendTime;
}
//降序排列3-2-1隻取前CDtime最大的一條數據
array_multisort($time,SORT_NUMERIC,SORT_DESC,$allInfo);
給你一個例子,絕對可以實現
⑼ php 根據某個欄位對二維數組這個數組排序
試編寫代碼如下:
<?php
$array[] = array('id'=>1,'price'=>50);
$array[] = array('id'=>2,'price'=>70);
$array[] = array('id'=>3,'price'=>30);
$array[] = array('id'=>4,'price'=>20);
foreach ($array as $key=>$value){
$id[$key] = $value['id'];
$price[$key] = $value['price'];
}
array_multisort($price,SORT_NUMERIC,SORT_DESC,$id,SORT_STRING,SORT_ASC,$array);
echo '<pre>';
print_r($array);
echo '</pre>';
?>
運行結果:
Array
(
[0] => Array
(
[id] => 2
[price] => 70
)
[1] => Array
(
[id] => 1
[price] => 50
)
[2] => Array
(
[id] => 3
[price] => 30
)
[3] => Array
(
[id] => 4
[price] => 20
)
)
⑽ PHP中怎麼根據二維數組中的子數組的某個元素進行排序
//先用array_column 多維數組按照縱向(列)取出
$date = array_column($arr, '0');
//上面得到的結果:array()
//再用array_multisort 結合array_column得到的結果對$arr進行排序
array_multisort($date,SORT_ASC,$arr);