前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php二维数组排序

php二维数组排序

作者头像
苦咖啡
发布2018-05-07 16:52:26
1.4K0
发布2018-05-07 16:52:26
举报
文章被收录于专栏:我的博客我的博客

要求:按照每一列中最大元素重新排序。比如原来是 1    2     3 4    5      6 7     8      9 排序过后就是 3   2   1 6   5   4 9   8   7 按照9 8 7 顺序重新排列了数组。

txt文件内容如下

5 6 12 2 3 58 8 5 15 5 59 5 52 4 41 14 5 2 2 1 1 40 2 1 12 8 1 1 1 1 1 1

实现代码如下:

代码语言:javascript
复制
 <?php
 $r=0;
 $l=0;
 $arr=array();
 $file=fopen(“input.txt”,”r”);
 $rl=fgets($file);
 list($r,$l)=explode(‘ ‘,$rl);//先读取行数和列数
 for($i=0;$i<$r;$i++)//每次读取一行,然后分隔存入数组中
 {$rl=fgets($file);
 array_push($arr,explode(‘ ‘,$rl));
 }
 fclose($file);
 echo “总共有”.sizeof($arr).”行,”. sizeof($arr[0]).”列<br />”;
 echo “二维数组内元素排序前为:<br />”;
for($i=0;$i<$r;$i++)
 {
  for($j=0;$j<$l;$j++)
  {
   echo $arr[$i][$j].” “;
  }
  echo “<br />”;
 }
//开始排序,要求是按照列中最大元素排序
function  GetMax($arr1)//获取数组中最大元素的y坐标
 {
  $max=intval($arr1[0][0]);
  $y=0;
  for($i=0;$i<sizeof($arr1);$i++)
  {
   for($j=0;$j<sizeof($arr1[0]);$j++)
   {
    //if(intval($arr1[$i][$j])>$max)//这里的intval不能去掉,去掉有错
    if(intval($arr1[$i][$j])>$max)
    {
     $max=$arr1[$i][$j];
     $y=intval($j);
    }
   } 
  }
  return intval($y);
 
 }
$newarr=array(array());
 for($i=0;$i<$l;$i++){
  $a=GetMax($arr);
  for($j=0;$j<$r;$j++)
  { 
    $newarr[$j][$i]=$arr[$j][$a];
    $arr[$j][$a]=0;
  }
 }
 echo “排序过后是:<br />”;
 for($i=0;$i<$r;$i++)
 {
  for($j=0;$j<$l;$j++)
  {
   echo $newarr[$i][$j].” “;
  }
  echo “<br />”;
 }
 ?>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011年10月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档