2013-05-07 55 views
0

我有一個無效的參數爲我最後一個關聯數組foreach循環提供。我正在循環使用不同的電子郵件地址並創建一個數組。難道我做錯了什麼?我應該創建一個空數組嗎?foreach關聯數組循環的無效參數

乾杯!

global $wpdb, $wpsc_variations; 

    $stock_table = $wpdb->prefix . 'postmeta'; 
    $posts_table = $wpdb->prefix . 'posts'; 

    $q = 'SELECT DISTINCT post_id FROM ' . $stock_table . ' WHERE meta_key=\'' . NOTIFY_META . '\' AND meta_value=1'; 
    $q_assoc_arr = $wpdb->get_results($q, ARRAY_A); 

    foreach($q_assoc_arr as $row) { 

     $product_id = $row['post_id']; 

     $product_data = get_post_custom($product_id); 
     $product_data['meta'] = maybe_unserialize($product_data); 
     foreach ($product_data['meta'] as $meta_key => $meta_value) { 
      $product_data['meta'][$meta_key] = $meta_value[0]; 
     } 

     if ($product_data['meta']['_wpsc_stock'] > 0) { 

      foreach (get_post_meta($product_id, NOTIFY_EMAILS_META, true) as $k=>$v) { 

       $emails[] = $v; 

      } 

回答

1

你的第三foreach依賴於get_post_meta輸出,但你傳遞真正作爲第三個參數。這告訴get_post_meta作爲字符串返回單個值,而不是數組。要求迭代數組。 :)

注意:這部分將會失敗,但您的其他實例foreach也可能會失敗,如果數組未通過。

+0

謝謝spencer,關於如何格式化get_post_meta的建議? – adnan 2013-05-07 19:22:33

+0

如果有多個名爲'NOTIFY_EMAILS_META'的自定義字段,那麼只需將'false'作爲第三個參數傳遞給'get_post_meta',或者直接將參數完全關閉,並且默認爲'false'。 – 2013-05-07 19:30:02