2015-11-03 87 views
1

我想我的正常的PHP构建脚本集成到WordPress的工作。我被困在一个功能完美的地方,而不是在wordpress环境中。用PHP全局变量

在下面的代码,我得到空数组在我的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); 
+0

都能跟得上。这应该工作。 – cgee

+0

你究竟想达到什么目的? –

+0

啊......看到'全球'关键字...这里住龙!除了使用全局变量之外,还有其他方法吗?特别是通用命名行'$ final'带有的问题是,您创建了与其他任意代码的意外碰巧使用相同变量名称的名称冲突... – arkascha

回答

0

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

$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); 
    } 
+0

好吧,实际上我需要在一个循环中调用myFunc,15次... – abdfahim

+0

您可以根据您的要求在for循环中添加myFunc($ arr)值。 – WisdmLabs

0

这应该工作,但全局是讨厌的东西使用,并且经常会发生冲突,我建议刚返回从函数的数组。

例如

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); 
} 
+0

好吧,其实我需要调用myFunc一个循环,15次...... – abdfahim

+0

只是叫最后四行15次在循环。或者你可以调整myFunc并不断解析数组,并且每次都分析它。正如你不能传递函数为它的SQL是怎么回事每次返回不同的数据直通环路的任何信息? –