日期:2014-05-16  浏览次数:20489 次

PHP递归报错
我写了一个类Sort.php,里面的方法实现快速排序代码如下:
<?php
class Sort{
       public function quickSort($arr){
$count=count($arr);
if($count<=1)
return $arr;
$key=$arr[0];
$left_arr=array();
$right_arr=array();
for($i=1;$i<$count;$i++){
if($arr[$i]<=$key){
$left_arr[]=$arr[$i];
}else{
$right_arr[]=$arr[$i];
}
}
$left_arr=quickSort($left_arr);
$right_arr=quickSort($right_arr);
return array_merge($left_arr,array($key),$right_arr);
}
}
?>
然后写了个测试,sortTest.php,代码如下
<?php
 
require('Sort.php');
$array=array(12,15,9,20,6,31,24);
$sort=new Sort();
$arr=$sort->quickSort($array);
$arr=quickSort($array);
print_r($arr);

?>
当我运行这个测试文件时,报错如下:
Fatal error: Call to undefined function quickSort() in D:\WWW\PHPDemo\suanfa\Sort.php on line 75
说我调用了一个没定义的方法,但是当我把这个方法放在sortTest.php中运行时,没有问题。请帮忙解释下这是为什么,万分感谢~
------解决方案--------------------
类的方法是有作用域的
$left_arr=$this->quickSort($left_arr);
$right_arr=$this->quickSort($right_arr);
------解决方案--------------------
汗,#1红色部分早就跟你标出错误的地方了。看回复不仔细。。