一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - php對(duì)二維數(shù)組按指定鍵值key排序示例代碼

php對(duì)二維數(shù)組按指定鍵值key排序示例代碼

2020-05-31 13:49whsnow PHP教程

對(duì)二維數(shù)組按指定鍵值key排序,對(duì)于一些新手朋友或許存在難度,下面為大家介紹下在php中時(shí)如何實(shí)現(xiàn)的

復(fù)制代碼 代碼如下:

function array_sort($array, $key){
if(is_array($array)){
$key_array = null;
$new_array = null;
for( $i = 0; $i < count( $array ); $i++ ){
$key_array[$array[$i][$key]] = $i;
}
ksort($key_array);
$j = 0;
foreach($key_array as $k => $v){
$new_array[$j] = $array[$v];
$j++;
}
unset($key_array);
return $new_array;
}else{
return $array;
}
}

 

PHP二維數(shù)組按鍵值排序

PHP 中 array_multisort() 可以用來(lái)一次對(duì)多個(gè)數(shù)組進(jìn)行排序,或者根據(jù)某一維或多維對(duì)多維數(shù)組進(jìn)行排序。關(guān)聯(lián)鍵名保持不變,但數(shù)字鍵名會(huì)被重新索引。輸入數(shù)組被當(dāng)成一個(gè)表的列并以行來(lái)排序,第一個(gè)數(shù)組是要排序的主要數(shù)組。數(shù)組中的行(值)比較為相同的話就按照下一個(gè)輸入數(shù)組中相應(yīng)值的大小來(lái)排序,依此類推。

但是如果需要排序的數(shù)組是一個(gè)二維數(shù)組,需要按照數(shù)組的鍵值排序,如下面這個(gè)二維數(shù)組,需要按照sort鍵名來(lái)排序,那么array_multisort() 就無(wú)法直接實(shí)現(xiàn)了:

?
1
2
3
4
5
6
7
8
9
10
11
12
$data[5] = array('volume' => 67, 'edition' => 2);
$data[4] = array('volume' => 86, 'edition' => 1);
$data[2] = array('volume' => 85, 'edition' => 6);
$data[3] = array('volume' => 98, 'edition' => 2);
$data[1] = array('volume' => 86, 'edition' => 6);
$data[6] = array('volume' => 67, 'edition' => 7);
// 準(zhǔn)備要排序的數(shù)組
foreach ($data as $k => $v) {
  $edition[] = $v['edition'];
}
array_multisort($edition, SORT_ASC, $data);
print_r($data);

將輸出:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Array
(
  [0] => Array
    (
      [volume] => 86
      [edition] => 1
    )
 
  [1] => Array
    (
      [volume] => 67
      [edition] => 2
    )
 
  [2] => Array
    (
      [volume] => 98
      [edition] => 2
    )
 
  [3] => Array
    (
      [volume] => 85
      [edition] => 6
    )
 
  [4] => Array
    (
      [volume] => 86
      [edition] => 6
    )
 
  [5] => Array
    (
      [volume] => 67
      [edition] => 7
    )
 
)

為了不破壞原有的key,寫了一個(gè)排序函數(shù),僅支持二維數(shù)組。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 根據(jù)數(shù)組中的某個(gè)鍵值大小進(jìn)行排序,僅支持二維數(shù)組
*
* @param array $array 排序數(shù)組
* @param string $key 鍵值
* @param bool $asc 默認(rèn)正序
* @return array 排序后數(shù)組
*/
function arraySortByKey(array $array, $key, $asc = true)
{
  $result = array();
  // 整理出準(zhǔn)備排序的數(shù)組
  foreach ( $array as $k => &$v ) {
    $values[$k] = isset($v[$key]) ? $v[$key] : '';
  }
  unset($v);
  // 對(duì)需要排序鍵值進(jìn)行排序
  $asc ? asort($values) : arsort($values);
  // 重新排列原有數(shù)組
  foreach ( $values as $k => $v ) {
    $result[$k] = $array[$k];
  }
 
  return $result;
}

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费精品99久久国产综合精品 | 国产成人精品高清在线 | 2022超帅男同gayxxx | 暖暖中国免费观看高清完整版 | 国产精品视频第一区二区三区 | 欧美聚众性派对hdsex | 亚洲国产精品自在现线让你爽 | 亚洲精品丝袜在线一区波多野结衣 | 咪咪爱网友自拍 | 亚洲免费视频一区二区三区 | 成人1234 | 国产小嫩模好紧 | 国产精品亚洲精品青青青 | 男同gay作爰视频网站 | 亚洲美女啪啪 | 1769亚洲资源站365在线 | 3d动漫美女被吸乳羞羞有 | 99久久精品国内 | 亚洲精品无码久久不卡 | 俺去俺也在线www色官网 | 久久这里只精品国产99re66 | 久久精品视在线观看2 | 99人中文字幕亚洲区 | 国产精品国产香蕉在线观看网 | 91精品国产品国语在线不卡 | luan小说| 538亚洲欧美国产日韩在线精品 | 亚洲伦理天堂 | 牧教师| 欧美日韩高清完整版在线观看免费 | 国产精品www | 日韩人成 | 俺去俺来也在线www色官网 | 金发美女与黑人做爰 | 热99精品只有里视频最新 | 草莓绿巨人香蕉茄子芭乐 | 五月丁香啪啪. | 成人网视频免费播放 | 久久永久影院免费 | 精品手机在线1卡二卡3卡四卡 | 天天干天天色综合 |