Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我会得到这个;只能通过引用传递变量;PHP错误?_Php_Arrays - Fatal编程技术网

为什么我会得到这个;只能通过引用传递变量;PHP错误?

为什么我会得到这个;只能通过引用传递变量;PHP错误?,php,arrays,Php,Arrays,我得到了这个错误:- 严格标准:只能通过引用传递变量 。。。我不知道发生了什么事;此代码中出现错误: public function prepare_items() { $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $this->_column_headers = array($columns, $hid

我得到了这个错误:-

严格标准:只能通过引用传递变量

。。。我不知道发生了什么事;此代码中出现错误:

public function prepare_items() {
    $columns = $this->get_columns();
    $hidden = array();
    $sortable = $this->get_sortable_columns();
    $this->_column_headers = array($columns, $hidden, $sortable);
    $this->items = $this->flagged_message();

    usort( $this->flagged_message(), array( &$this, 'usort_reorder' ) );
    $this->items = $this->flagged_message();        

}
这一行是错误:

 usort( $this->flagged_message(), array( &$this, 'usort_reorder' ) );
标记的_message()
函数是:

public function flagged_message(){
    global $wpdb;
    $improper_contents = $wpdb->get_results( $wpdb->prepare("SELECT comment_id FROM pw_commentmeta WHERE meta_key = 'flag_this_message' AND meta_value = '%d'", $this->flagged_id) );
    $flagged = [];
    if($improper_contents){
        foreach ($improper_contents as $improper_content_arr) {

        $comment_id = (int)$improper_content_arr->comment_id;
        $comment = get_comment( $comment_id );
        $comment_content = $comment->comment_content;
        $comment_author = $comment->comment_author;
        $comment_post_ID = $comment->comment_post_ID;
        $comment_date = $comment->comment_date;
        $comment_who = $comment->user_id;

        $flagged[] = array(
            "ID"                =>  $comment_id,
            "username"          =>  $comment_author,
            "flagged_message"   =>  $comment_content,
            "date"              =>  $comment_date,
        );

        }

    }
    return $flagged;
}
我不明白为什么会出现错误,有人能给我解释一下吗?

bool usort ( array &$array , callable $value_compare_func )
需要一个数组按引用对其进行排序,您将向它发送一个
函数
,作为第一个参数。就这样

我知道您的函数返回一个数组,但您需要将其存储在一个变量中,以便将其引用传递给
usort
。一个函数的返回值在其作用域之外是未知的,如果不先将该值保存在变量中,它将在另一个函数中引用。如果
usort
没有期望引用该参数,那么您的代码就可以了

任何value函数调用都可以接受这一点

注意

很可能您错误地将参数按错误的顺序排列。因为你的第二个参数似乎是一个数组,这也是错误的。第一个应该是
数组
,第二个应该是
可调用的
,然后将它们颠倒过来。但即便如此,这也不是真正的调用
usort

你的电话应该是这样的

$messages=$this->flagged_message();
usort($messages , 'usort_reorder');
根据
usort()
function reference,第一个参数将是一个数组,但您正在发送一个函数,这会导致错误,因此按如下方式更改:-

usort( $this->flagged_message(), array( &$this, 'usort_reorder' ) );
将其更改为:-

$message_data = $this->flagged_message(); // assign function return value to a variable
usort( $message_data,'usort_reorder'); // pass the variable to the function as first parameter. check the change in second parameter too

注:-有关更多详细信息,请参阅手册:-

我更改了第一个示例中的第二个参数,因为第二个参数必须是
有效的回调函数
,并且您传递了一个数组(我觉得这不正确)。这就是为什么我也添加了第二个示例。两个都试试,哪一个对您有效,请使用该示例

usort( $this->flagged_message(), array( &$this, 'usort_reorder' ) );


希望得到他的帮助。

函数返回的结果不是变量。
usort($this->flagged_message(),数组(&$this,'usort_reorder')将其更改为
$message_data=$this->flagged_message();usort($message_data,array(&$this,'usort_reorder'))大家好,谢谢你们给我一个关于错误的想法,我尝试了你们建议的所有解决方案,但都不起作用,但重要的是你们向我解释了错误信息。我使用的解决方案是在函数flagged_message()上,在返回$flagged之前,我将代码usort($flagged,array(&$this,'usort_reorder');谢谢,它是有效的,顺便说一句,我忘了提到我在使用wordpress cms,但我知道我不在乎。再次感谢您,这是哪种类型的
usort
呼叫?你确定第二个参数可以吗?对不起,我弄错了,让我添加与此相关的注释。
usort( $this->flagged_message(), array( &$this, 'usort_reorder' ) );
usort( $this->flagged_message(), array( $this, 'usort_reorder' ) );