<?php function compositer()
{
$num = 10;
$start = 0;
$end = 100;
$ul_array = 0; while($ul_array <$num)
{
$a[]=rand($start,$end);
$ary=array_unique($a);
$ul_array=count($ary);
} foreach ($ary as $value)
{
echo $value.",";
}
return $ary;
} function BubbleSort($arr)
{
$num = count($arr);
for($i=0;$i < $num;$i++)
{
for($j=0;$j < $num;$j++)
{
if($arr[$i] < $arr[$j])
{
$iTemp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $iTemp;
}
}
}
return $arr;
}if(isset($_POST['sub'])){
session_start();
if($_POST['sub']=='原数组')
$_SESSION['原数组']=compositer();
if($_POST['sub']=='排序'){
$My_array = BubbleSort($_SESSION['原数组']);
echo "原数组:<br>";
print_r($_SESSION['原数组']);
echo '<br>';
echo "排序数组:<br>";
print_r($My_array);
}
}?>
<html>
<head>
<title>数组显示 </title>
</head>
<body>
<form action="MyPhp.php" method = "post">
<input type = "submit" value = "原数组" name ="sub"/>
<input type = "submit" value = "排序" name = "sub" />
</form>
</body>
</html>
这个程序通过 多次点击以后 排序的数组就会出现错误 为什么?哪位高手帮我解决下
{
$num = 10;
$start = 0;
$end = 100;
$ul_array = 0; while($ul_array <$num)
{
$a[]=rand($start,$end);
$ary=array_unique($a);
$ul_array=count($ary);
} foreach ($ary as $value)
{
echo $value.",";
}
return $ary;
} function BubbleSort($arr)
{
$num = count($arr);
for($i=0;$i < $num;$i++)
{
for($j=0;$j < $num;$j++)
{
if($arr[$i] < $arr[$j])
{
$iTemp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $iTemp;
}
}
}
return $arr;
}if(isset($_POST['sub'])){
session_start();
if($_POST['sub']=='原数组')
$_SESSION['原数组']=compositer();
if($_POST['sub']=='排序'){
$My_array = BubbleSort($_SESSION['原数组']);
echo "原数组:<br>";
print_r($_SESSION['原数组']);
echo '<br>';
echo "排序数组:<br>";
print_r($My_array);
}
}?>
<html>
<head>
<title>数组显示 </title>
</head>
<body>
<form action="MyPhp.php" method = "post">
<input type = "submit" value = "原数组" name ="sub"/>
<input type = "submit" value = "排序" name = "sub" />
</form>
</body>
</html>
这个程序通过 多次点击以后 排序的数组就会出现错误 为什么?哪位高手帮我解决下
解决方案 »
- 用MVC架构时,怎么进行多表联合查询?求一比较优秀的解决办法
- IIS(ISAPI)的伪静态规则应该怎么写?
- 什么情况下,apache会出现这种错误
- PHP jquery plupload 文件上传的目录有些看不懂,望指导
- apache 2.0好用还是1.0好用?php 4.3.2好用还是以前的好用?我被php的版本都搞乱套了。
- 一个关于图片尺寸控制的问题.
- 怎么解决win8系统安装zend权限不足的问题
- SOS: 请教怎么在百度统计里标志受访页面是微信打开?
- php怎么通过用户名获取数据库里的用户名id,,大神们,,
- 在线等 求大神帮忙 这是怎么地了 为什么上边多出一个s ?
- php+mysql
- PHP网站在海外服务器发布,文件上传的问题
{
$num = 10;
$start = 0;
$end = 100;
$ul_array = 0;while($ul_array <$num)
{
$a[]=rand($start,$end);
$ary=array_unique($a);
$ul_array=count($ary);
}foreach ($ary as $value)
{
echo $value.",";
}
return $ary;
}if(isset($_POST['sub'])){
session_start();
if($_POST['sub']=='原数组')
$_SESSION['old']=compositer();
if($_POST['sub']=='排序'){
echo "原数组: <br>";
print_r($_SESSION['old']);
echo ' <br>';
echo "排序数组: <br>";
sort($_SESSION['old']);
print_r($_SESSION['old']);
}
}?>
<html>
<head>
<title>数组显示 </title>
</head>
<body>
<form action="" method = "post">
<input type = "submit" value = "原数组" name ="sub"/>
<input type = "submit" value = "排序" name = "sub" />
</form>
</body>
</html>
php自带的sort就行了,你自己写的,看着挺晕……
Array ( [0] => 45 [1] => 60 [2] => 97 [3] => 52 [5] => 2 [6] => 68 [7] => 4 [8] => 1 [9] => 33 [10] => 82 )
排序数组:
Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 33 [4] => 45 [5] => 52 [6] => 60 [7] => 68 [8] => 82 [9] => 97 )
其中原数组的key已经出错。但是sort()排序重新改写key,所以不会出错。
其实,出错的地方应该在compositer()里面。感觉如果点击太快的话,原来的数组还没生成完成,就又开始
生成新的数组,所以key会超过9。
$_SESSION['原数组']
unset掉unset($_SESSION['原数组']);
我想应该是随机数重复时出错。
把
while($ul_array <$num)
{
$a[]=rand($start,$end);
$ary=array_unique($a);
$ul_array=count($ary);
}
改成
while($ul_array <$num){
$a[$ul_array]=rand($start,$end);
$ary=array_unique($a);
$ul_array=count($ary);
}
。
我试过了没问题。^_^
{
$num = 5;
$start = 0;
$end = 100;
$ul_array = 0;while($ul_array <$num)
{
$a[]=rand($start,$end);
$ary=array_unique($a);
$ul_array=count($ary);
}
$being=0;
foreach ($ary as $value)
{
echo $value.",";
$ary[$being] = $value;
$being++;
}
return $ary;
}楼主的排序算法并没有错,是因为你在生成数组的时候用array_unique,这个函数只是去除重复的值,但是索引还保留了
所以在你比较的时候,有的$arr[$i] 或 $arr[$j]是不存在的,留下一个空
return $ary;
改为
return array_slice($ary, 0);