php二維數組根據某個欄位排序
① php怎麼根據數組中其中的一個值排序
$newArr=array();
for($j=0;$j<count($arr);$j++){
$newArr[]=$arr[$j]['flag']
}
array_multisort($newArr,$arr);
print_r($arr)
② PHP二維數組怎麼按某個欄位排序
請確定你說的二維數組的樣式,是這樣的?:
array('name1'=>'value1','name2'=>'value2');
或者是這樣的?:
array(
array('name1'=>'value1','name2'=>'value2'),
array('name1'=>'value3','name2'=>'value4')
);
③ 關於php二維數組中按某個元素的值排序
你可以使用usort這個函數進行對$a['list']進行處理
usort($a['list'],function($a,$b){
if($a['app_down']==$b['app_down'])return0;
return$a['app_down']>$b['app_down']?1:-1;
//如果發現結果是升序,1和-1對換下位置,記不太清了
});
④ PHP中怎麼根據二維數組中的子數組的某個元素進行排序
//先用array_column 多維數組按照縱向(列)取出
$date = array_column($arr, '0');
//上面得到的結果:array()
//再用array_multisort 結合array_column得到的結果對$arr進行排序
array_multisort($date,SORT_ASC,$arr);
⑤ php 二維數組排序問題 某欄位按照自定義規則排序
復雜的數組排序可以用自定義的排序規則
<?php
$arr=array(
0=>array('id'=>'2014347856','name'=>'張甜','科目'=>'語文','tag'=>'期中考試','成績'=>'142'),
1=>array('id'=>'2014347856','name'=>'張甜','科目'=>'數學','tag'=>'期中考試','成績'=>'98'),
2=>array('id'=>'2014347856','name'=>'張甜','科目'=>'英語','tag'=>'期中考試','成績'=>'118'),
3=>array('id'=>'2014347856','name'=>'張甜','科目'=>'化學','tag'=>'期中考試','成績'=>'78'),
4=>array('id'=>'2014347856','name'=>'張甜','科目'=>'物理','tag'=>'期中考試','成績'=>'132'),
5=>array('id'=>'2014347856','name'=>'張甜','科目'=>'生物','tag'=>'期中考試','成績'=>'115'),
6=>array('id'=>'2014347856','name'=>'張甜','科目'=>'地理','tag'=>'期中考試','成績'=>'99'),
7=>array('id'=>'2014347856','name'=>'張甜','科目'=>'歷史','tag'=>'期中考試','成績'=>'88'),
8=>array('id'=>'2014347856','name'=>'張甜','科目'=>'政治','tag'=>'期中考試','成績'=>'125'),
9=>array('id'=>'2014347880','name'=>'李鳴','科目'=>'語文','tag'=>'期中考試','成績'=>'79'),
10=>array('id'=>'2014347880','name'=>'李鳴','科目'=>'數學','tag'=>'期中考試','成績'=>'148'),
11=>array('id'=>'2014347880','name'=>'李鳴','科目'=>'英語','tag'=>'期中考試','成績'=>'142'),
);
/*自定義排序*/
functionuserSort($a,$b)
{
if($a['name']==$b['name']){
/*排序科目*/
$subjectSort=array('語文','數學','英語','歷史','政治','地理','物理','化學','生物');
foreach($subjectSortas$index=>$item){
if($a['科目']==$item){
$tmp1=$index;
}
if($b['科目']==$item){
$tmp2=$index;
}
}
return$tmp1<$tmp2?-1:1;
}else{
/*排序name*/
$tmpArr=[$a['name'],$b['name']];
sort($tmpArr);
return$a['name']==$tmpArr[0]?-1:1;
}
}
usort($arr,'userSort');
var_mp($arr);
⑥ 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,對已知數據(二維數組)排序+分頁,根據某個欄位排序(該欄位是動態,距離),分頁就亂了
沒太看明白你寫的什麼意思
一般做分頁都是先對總的數據做排序,然後根據頁碼去分頁好的數組裡面取相對應的數據,
⑧ php 怎麼根據數組中其中的一個值排序
sort() - 以升序對數組排序
rsort() - 以降序對數組排序
asort() - 根據值,以升序對關聯數組進行排序
ksort() - 根據鍵,以升序對關聯數組進行排序
arsort() - 根據值,以降序對關聯數組進行排序
krsort() - 根據鍵,以降序對關聯數組進行排序
⑨ 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二維數組中按某個元素的值排序
//提供一個方法
classlib_BaseUtils{
static$s_field;
static$s_sc;
/**
*php二維數組按鍵值排序
*@paramarray$a需要排序的數組
*@paramstring$sort排序的鍵值
*@paramstring$d默認ASC,帶上參後為DESC
*@returnboolean
*/
staticfunctionarray_sort(&$a,$sort,$d=''){
self::$s_field=$sort;
self::$s_sc=$d;
usort($a,array("lib_BaseUtils","array_sort_callback"));
return$a;
}
//排序回調方法請勿刪除
staticfunctionarray_sort_callback($a,$b){
$s_a=self::$s_sc?$b:$a;
$s_b=self::$s_sc?$a:$b;
$field=self::$s_field;
switch(true){
case(is_string($s_a[$field])&&is_string($s_b[$field])):
returnstrcmp($s_a[$field],$s_b[$field]);
break;
default:
if($s_a[$field]==$s_b[$field]){
return0;
}else{
return$s_a[$field]>$s_b[$field]?-1:1;
}
}
}
}
調用方法
lib_BaseUtils::array_sort($lists, 'app_down','desc');