查找数组中某一维数的最高值和排序

fxs_2008 2009-06-26 11:29:05
Array
(
[0] => Array
(
[0] => 14703
[1] => 【寻犬】旺旺昨天丢了!请大家帮忙!
[2] => 1236911820
[3] => sindri
)

[1] => Array
(
[0] => 14724
[1] => 求助!紧急,请养藏獒的朋友帮忙
[2] => 1237288104
[3] => 豆豆
)

[2] => Array
(
[0] => 14437
[1] => 世界名犬应有尽有 低价出售品质保证
[2] => 1236993402
[3] => 大眼睛双鱼
)

)


上面第三项,如何取出[2] => 1236993402这一维的最高值,返回该记录的id,即

[2] => Array
(
[0] => 14437
[1] => 世界名犬应有尽有 低价出售品质保证
[2] => 1236993402
[3] => 大眼睛双鱼
)

排序上不知何好办法?
...全文
78 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fxs_2008 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dada20042030 的回复:]
还是不太明白你的意思.
[/Quote]

上面这个数组是从数据库根据表记录读出来的数组,第一级是记录顺度;第二级是每个记录各列的值

如果在数据库,要想的结果就是最后发贴的记录,实际上就是按时间序列倒序排序,取第一个记录

即select * from tbl order by pubdate limit 1



现在想在数组中实现这个排序
落叶秋2020 2009-06-26
  • 打赏
  • 举报
回复

$arr = array(
0=>array(0=>'14703',1=>'旺旺昨天丢了!请大家帮忙',2=>'1236911820'),
1=>array(0=>'14724 ',1=>'求助!紧急,请养藏獒的朋友帮忙',2=>'1237288104'),
2=>array(0=>'14437',1=>'世界名犬应有尽有 低价出售品质保证',2=>'1236993402 '),
);

function array_sort_key(array &$array, $key) {

global $_key;

if(!function_exists(_array_sort_key_cmp)) {

function _array_sort_key_cmp($a, $b) {

global $_key;

return strcmp($a[$_key], $b[$_key]);

}

}

$_key = $key;

$result = usort($array, "_array_sort_key_cmp");

unset($_key);

return $result;
}

echo "按0排序\n<BR><BR>";
array_sort_key($arr, 0);
var_export($arr);
echo "\n按1排序\n<BR><BR>";
array_sort_key($arr, 1);
var_export($arr)."\n";
echo "\n按2排序\n<BR><BR>";
array_sort_key($arr, 2);
var_export($arr);

剑心永远OK 2009-06-26
  • 打赏
  • 举报
回复
还是不太明白你的意思.
tfxg 2009-06-26
  • 打赏
  • 举报
回复
<?php
foreach ($array as $key=>$value){
$value0[$key] = $value[0];
$value1[$key] = $value[1];
$value2[$key] = $value[2];
$value3[$key] = $value[3];
}

array_multisort($value2,SORT_NUMERIC,SORT_DESC, $value0,SORT_STRING,SORT_ASC,$value1,SORT_STRING,SORT_ASC, $value3,SORT_STRING,SORT_ASC,$array);
print_r($array);
?>
tfxg 2009-06-26
  • 打赏
  • 举报
回复
手冊例子:
<?php
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
?>

本例中 data 数组中的每个单元表示一个表中的一行。这是典型的数据库记录的数据集合。

例子中的数据如下:

volume | edition
-------+--------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7


数据全都存放在名为 data 的数组中。这通常是通过循环从数据库取得的结果,例如 mysql_fetch_assoc()。

<?php
$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);
?>

本例中将把 volume 降序排列,把 edition 升序排列。

现在有了包含有行的数组,但是 array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序。

<?php
// 取得列的列表
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}

// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>

数据集合现在排好序了,结果如下:

volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7




你的問題用上面的方法可以解決,沒時間寫,你自己看吧
fxs_2008 2009-06-26
  • 打赏
  • 举报
回复
谢谢各位了!



$data=array (
0 =>
array (
0 => '14703',
1 => '【寻犬】旺旺昨天丢了!请大家帮忙!',
2 => '1236911820',
3 => 'sindri',
),
1 =>
array (
0 => '14724',
1 => '求助!紧急,请养藏獒的朋友帮忙',
2 => '1237288104',
3 => '豆豆',
),
2 =>
array (
0 => '14437',
1 => '世界名犬应有尽有 低价出售品质保证',
2 => '1236993402',
3 => '大眼睛双鱼',
),
);



foreach($data as $key => $row){
$time[$key] = intval($row[2]);
}


array_multisort($time, SORT_DESC, $data);
print_r($data);






看了一下,原理都差不多,都要生成要排序列的数组
总哈哈 2009-06-26
  • 打赏
  • 举报
回复
现成的函数。。。。
程序猿之殇 2009-06-26
  • 打赏
  • 举报
回复
1 最笨的方法就是按照哪个字段排序,然后第一个记录或者最后一条记录就是你想要的.
2 优化一下就是写个高效的算法,直接返回最高值的id,不需要排序.但至少要遍历一次数组.
cyxin2121921 2009-06-26
  • 打赏
  • 举报
回复
mark
zkluninfo 2009-06-26
  • 打赏
  • 举报
回复
<?php
// 取得列的列表
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}

// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>

数据集合现在排好序了,结果如下:

volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧