Answers
error_Reporting(E_ALL);
function cmp($a,$b) {
static $first = true;
if ($first) {
try{
unset($GLOBALS['arr']["B"]);
}catch(Exception $e){
$e->getMessage();
}
}
$first = false;
return ($a < $b) ? -1 : 1;
}
$arr = new ArrayObject(array("A" =>1,"B" => 2, "C" =>3, "D" => 4));
你需要把unset($GLOBALS['arr']["B"]);try catch起来因为当排序开始时
$GLOBALS['arr']["B"]这个元素已经unset掉了 所以当循环到调用这个元素的时候是找不到他的程序就中断了至于内存泄露好像是php的bug
PHP PHP <= 5.3.2
PHP PHP <= 5.2.13
都有这个问题
参考
PHP ArrayObject::uasort()中断处理内存破坏漏洞
fromst
answered 12 years, 5 months ago