2015-11-03 85 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是怎麼回事每次返回不同的數據直通環路的任何信息? –