我在php手册网站上找到了一个数组排序功能,它完全符合我的要求,但它会产生警告,我一直试图弄清楚为什么以及如何阻止它们。任何建议都很有用。
function fnArrayOrderby(){
//function to sort a database type array of rows by the values in one or more column
//source http://php.net/manual/en/function.array-multisort.php - user notes
//example of use -> $sorted = fnArrayOrderby($data, 'volume', SORT_DESC, 'edition', SORT_ASC);
$args = func_get_args(); //Gets an array of the function's argument list (which can vary in length)
//echo "sorting on ".$args[1];
$data = array_shift($args); //Shift an element off the beginning of array
foreach ($args as $n => $field) {
if (is_string($field)) {
$tmp = array();
foreach ($data as $key => $row)
$tmp[$key] = $row[$field];
$args[$n] = $tmp;
}
}
$args[] = &$data;
call_user_func_array('array_multisort', $args);
return array_pop($args);
}
生成的警告是
答案 0 :(得分:0)
我现在已经解决了 - 感谢评论,特别是来自@rivimey的评论让我意识到函数本身可能没有任何问题,而是它被调用的方式。事实证明,当函数应用于未设置的数组时,会生成警告。例如,我使用该函数对与数据库条目关联的图像数组进行排序,但如果没有图像,则不设置该数组。
所以我现在在函数中添加了以下行
if(!isset($ args [0])){return;}
谢谢你的帮助!