Ⅰ 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二維數組自定義排序
functionpSort(&$arr)
{
$TimeSort=array();
foreach($arras$key=>$value){
$TimeSort[$key]=$value['age'];
}
asort($TimeSort);
$data=array();
foreach($TimeSortas$key=>$value){
$data[]=$arr[$key];
}
$i=0;
foreach($arras$k=>$v){
$arr[$k]=$data[$i];
$i++;
}
return$arr;
}
主要部分,你也可以考慮用那個多為數組排序的那個函數,上面這個是我前幾天自己寫的,不知道在你這能用不
Ⅲ php排序問題 二維數組排序
這種直接排序是ikending不行的,只能自己遍歷用邏輯來實現
Ⅳ PHP關於二維數組排序的問題!求大神幫忙
我用的是冒泡演算法,代碼如下:
<?php
$arr=array(
array(
'id'=>1,
'num'=>3,
'time'=>1522131034
),
array(
'id'=>2,
'num'=>7,
'time'=>1522132034
),
array(
'id'=>3,
'num'=>7,
'time'=>1522133034
),
array(
'id'=>4,
'num'=>7,
'time'=>1522134034
),
array(
'id'=>5,
'num'=>10,
'time'=>1522135034
),
array(
'id'=>6,
'num'=>0,
'time'=>1522136034
)
);
$t=count($arr);
$tmp=array();
for($i=0;$i<$t;$i++)
{
for($j=$i+1;$j<$t;$j++)
{
if($arr[$i]['num']>$arr[$j]['num'])
{
$tmp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$tmp;
}elseif($arr[$i]['num']==$arr[$j]['num'])
{
if($arr[$i]['time']>$arr[$j]['time'])
{
$tmp=$arr[$i];
$arr[$i]=$arr[$j];
$arr[$j]=$tmp;
}
}
}
}
print_r($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中怎麼根據二維數組中的子數組的某個元素進行排序
//先用array_column 多維數組按照縱向(列)取出
$date = array_column($arr, '0');
//上面得到的結果:array()
//再用array_multisort 結合array_column得到的結果對$arr進行排序
array_multisort($date,SORT_ASC,$arr);