2012-03-15 92 views
1

這是一個簡化版本。我有一個數組$ collected_data與價值觀我如何解析這個數組?

Array 
(
    [id] => 10711 
    [log_id] => 892 
    [form_id] => 2 
    [value] => fname 
) 
Array 
(
    [id] => 10712 
    [log_id] => 892 
    [form_id] => 3 
    [value] => lastname 
) 
Array 
(
    [id] => 10717 
    [log_id] => 892 
    [form_id] => 8 
    [value] => email 
) 
// ... 
// etc 

我怎麼能有一個像輸出:

fname lastname | email 
fname lastname | email 
etc 

我想:

foreach($form_data as $form_field) 
{ 
    $collected_data_sql = "SELECT * FROM `".WPSC_TABLE_SUBMITED_FORM_DATA."` WHERE `log_id` = '".$purchase['id']."' AND `form_id` = '".$form_field['id']."' LIMIT 1"; 
    $collected_data = $wpdb->get_results($collected_data_sql,ARRAY_A); 

    $collected_data = $collected_data[0]; 

    list($fname, $lastname, $email) = $collected_data; 

    echo $fname. ' '.$lastname.' | '.$email; 
} 

,但沒有奏效。

+1

這不回答你的問題,但爲什麼不做一個JOIN,而是多次調用該查詢? – Brad 2012-03-15 15:51:13

+3

*不起作用* - 您的輸出是什麼? – Josh 2012-03-15 15:51:19

回答

1

如果您使用的功能不完全清楚,請查閱說明書。 list需要一個基於0的數字索引的數組。您可以從字符串鍵轉換數組到數字的人與array_values

list($fname, $lastname, $email) = array_values($collected_data); 

(在這是你的問題的情況下,我不太確定,因爲你的問題沒有給出任何關於你的具體問題多的信息)

此外,您有一個數組的數組,所以你需要解壓你也有興趣的數據,例如:

$fname = $fname['value']; 
$lastname= $lastname['value']; 
$email = $email['value']; 

但是,這只是示範性的。

0

爲什麼不回顯$ collect_data_sql,然後在IDE上測試以查看SQL是否正確。我相信你的錯誤在你的條件下開始。

1

您必須考慮您的$collected_data中的數組索引,因此list()將不起作用。只有當你有array('John', 'Smith', '[email protected]');

你將需要遍歷結果並從'value'鍵取出值。