这是要排序的元素数组的示例:
$items =
array
0 =>
object(stdClass)[8]
public 'id' => string '110' (length=3)
public 'brand_id' => string '18' (length=2)
array
0 => string ' OT-708' (length=7)
public 'failed' => null
public 'diff' => null
1 =>
object(stdClass)[9]
public 'id' => string '161' (length=3)
public 'brand_id' => string '18' (length=2)
所以,假设我想排序brand_id
。
这是我的 usort 回调函数:
function _compare($itemA, $itemB){
if ($itemA->brand_id == $itemB->brand_id) {
return 0;
}
else{
return strcmp($itemA->brand_id, $itemB->brand_id); //just an example...
}
}
当我这样做时usort($items, '_compare'); var_dump($items);
什么都没发生。有关如何解决此问题的任何线索?
- 更新 -
好的,我将问题简化为:
function cmp($itemA, $itemB){
return -1;
}
if (usort($items, "cmp"))
echo 'I just sorted!';
else echo 'Cant sort!';
它总是打印 '无法排序!'
最后我发现了这个错误的根源。问题是这段代码位于一个类中。
如果这是你的情况,那么你应该这样调用 usort :
usort($items, array("MyClass", "compare_method"));
此外,如果您的类位于命名空间中,则应在 usort 中列出完整的命名空间。
usort($items, array('Full\Namespace\WebPageInformation', 'compare_method'));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)