使用PHP全局变量


Working with PHP global variable

我正在尝试将我的常规php构建脚本集成到wordpress中。我以前被困在一个功能完美的地方,但不是在wordpress环境中。

在下面的代码中,我在ajax请求中得到了空白数组,而在myFunc中确实有结果(我通过在其中放入wp_send_json进行了测试)。

为了在wordpress中使用PHP全局变量,我需要更改什么吗?

$final = array();
function myFunc(){
        global $wpdb;
        global $final;
        $sql = 'SELECT .......';
        $result = $wpdb->get_results($sql);
        if($wpdb->num_rows > 0){
            foreach ( $result as $row ) {
                $final[] = $row->pdate;
            }
            return true;
        }
        return false;
}
myFunc();
wp_send_json($final);

您可以使用以下语句从函数中获取更新的值。

  $arr = array();
   function myFunc($new_arr){
            global $wpdb;
            $sql = 'SELECT .......';
            $result = $wpdb->get_results($sql);
            if($wpdb->num_rows > 0){
                foreach ( $result as $row ) {
                    $new_arr[] = $row->pdate;
                }
            }
           //It will return updated array if result having rows.Otherwise return empty array.
           return $new_arr;
    }
    $final = myFunc($arr);
    if(!empty($final))//if block will be execute if myFunc doesn't return empty array.
    {
       wp_send_json($final);
    }

这应该有效,但全局变量使用起来很糟糕,而且经常会发生冲突。我建议从函数中返回数组。

例如

function myFunc(){
        global $wpdb;
        $final = array();
        $sql = 'SELECT .......';
        $result = $wpdb->get_results($sql);
        if($wpdb->num_rows > 0){
            foreach ( $result as $row ) {
                $final[] = $row->pdate;
            }
            return $final;
        }
        return false;
}
$myFuncReturn = myFunc();
if($myFuncReturn !== false){
   wp_send_json($myFuncReturn);
}