$a = Array
(
1 => 10.5,
4 => 10.5,
3 => 9,
2 => 9,
5 => 9,
);
sort($a);
krsort($a);
list($k,$v) = each($a);
echo "key:$k, value:$v\n";
(
1 => 10.5,
4 => 10.5,
3 => 9,
2 => 9,
5 => 9,
);
sort($a);
krsort($a);
list($k,$v) = each($a);
echo "key:$k, value:$v\n";
解决方案 »
- 代码出错 求帮助
- php初学者求解--关于文件下载
- php调用shell如何取得返回值
- 都看看 都尝尝jpgraph.php
- 关于页面切换时候的问题,怎么中断当前正在进行的操作?
- 请问如何在以下的js文件里添加屏蔽Ctrl+C复制功能和工具栏里的编辑和另存为功能和全选.先谢谢了!
- phpmyadmin乱码!!!快疯了
- 急用!!如何比较数据库中的两个表中 的内容,删除相同的数据,保留不一样的数据
- php生成.htm文件,分页问题!
- php无法连接memcached
- VI下面如何实现TAB 自动完成PHP函数,代码折叠等功能.
- 小猫继续寻找一位PHP师傅。找了那么久,竟然还没有找到!!!!!超郁闷!难道真的要贴PP才行???
(
1 => 10.5,
4 => 10.5,
3 => 9,
2 => 9,
5 => 9,
);
function maxKeyValue($arr)
{
$maxValue = 0;
$maxKey = 0 ;
foreach($arr as $k=>$v)
{
if($v >= $maxValue && $k > $maxKey)
{
$maxValue = $v;
$maxKey = $k;
}
}
return array($maxKey => $maxValue);
}print_r(maxKeyValue($a));
参照:foolbirdflyfirst的
<?
$a = Array
(
1 => 10.5,
2 => 9,
3 => 10.5,
4 => 9,
5 => 9,
);
sort($a);
krsort($a);
list($k,$v) = each($a);
echo "key:$k, value:$v\n";
?>key:4, value:10.5
(
1 => 10.5,
4 => 10.5,
10 => 10.5,
100 => 10.5,
3 => 9,
2 => 9,
20 => 9,
200 => 9,
);$mx = max($a);
foreach($a as $k=>$v) {
if ($mx === $v) {
$vmx[] = $k;
}
}
$kmx = max($vmx);
echo "$kmx, $mx\n";
4楼的代码很正确,很符合逻辑.在JAVA中,我也是经常这样写.
10楼的代码用的方法有点过旧."==="在php4中有.在php5中都不用了.我就没有用过.
(
1 => 10.5,
4 => 10.5,
3 => 9,
2 => 9,
5 => 9,
);function Max($arr){
$temp =1;
$point =1;
$temp=$arr[$point ];
for($i=1;i<=count($arr);$i++){
if($temp>=$arr[$i]){
$temp>=$arr[$i];
$point =$i;
}
}
echo "Max = ".$temp." And "."Point = ".$point;
}这样应该就可以了!
二楼的错误是取出数组中最大的值及最大的键值;
四楼的错误是不能取出最大的值而是同时取出最大的值及最大的键值(如2=>11,则将导致错误),而楼主的要求是最大的值之后的最大键值,十三楼的赶快检查你以前写过的JAVA到底有多少错误;
十楼的方法是正确的,用“===”是为了解决0和NULL的区分问题。
十五楼的兄弟代码本身就有语法错误、函数名称重复错误、里面的代码看的我头晕,勉强看了一下,大概意思是先出最大的值赋值给$temp,同时将其键值赋给$point,和PHP自带的MAX()函数差不多。同时该兄弟没有分清枚举数组和关联数组的区别。我在十五楼的兄弟代码基础上修改了一下:
<?php
//www.hubei8.cn修改了15楼兄弟的代码
$arr = Array
(
1 => 100.5,
4 => 10.5,
3 => 9,
2 => 9,
15 => 99 ,); function giveMax($arr){
$temp =0;
$temp=$arr[$point]; foreach($arr as $key =>$value){
if($temp<$value){
$temp=$value;
$point=$key;
}elseif($temp===$value){
if($point<$key){
$temp=$value;
$point=$key;
}
}
}
return 'Result:$arr'.'['.$point.']='.$temp;
} echo giveMax($arr);?>
楼主提的问题其实没有多大挑战性,但是,PHPer大多是自学成才,大部分都没有算法基础,才导致此问题出现了难度。建议大家都好好补补算法,我也是。
(
1 => 10.5,
4 => 10.5,
3 => 9,
2 => 9,
5 => 9,
);
function maxKeyValue($arr)
{
ksort($arr);
$maxValue = 0;
$maxKey = 0 ;
foreach($arr as $k=>$v)
{
if($v >= $maxValue && $k > $maxKey)
{
$maxValue = $v;
$maxKey = $k;
}
}
return array($maxKey => $maxValue);
}print_r(maxKeyValue($a));
$arr = Array
(
1 => 10.5,
4 => 10.5,
3 => 9,
2 => 9,
5 => 9,
); function Max($arr){
$temp =0;
$num =0;
foreach($arr as $key => $value){
if($temp>=$value){ $temp = $value;
$num = $key ;
} }
echo "Max = ".$temp." And "."Point = ".$num ;
} 呵呵,这样就可以了。如果还有什么问题请指出互相学习!不过怎么也想不到需要使用两个if,平白无故的给计算机增加负担嘛。至于Max()这个函数,我才开始接触php对他的函数了解不是特别多。在这里要谢谢你的提醒。不过,以后做人要厚道!在评论他人的时候也给自己留点余地!重申,还是十分感谢您的帮助、提醒!