2012-03-15 32 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'键取出值。