我如何解析这个数组?

时间:2012-03-15 15:47:14

标签: php arrays list

这是一个简化版本。我有一个数组$ gather_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;
}

但这没效果。

3 个答案:

答案 0 :(得分:1)

您必须考虑$collected_data中的数组索引,因此list()不起作用。这只有array('John', 'Smith', 'john.smith@example.com');

才有效

您需要遍历结果并从'value'键中提取值。

答案 1 :(得分:1)

如果您使用的功能尚不完全清楚,请查看手册。 list期望一个包含0的数字索引的数组。您可以使用array_values将数组从字符串键转换为数字键:

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

(如果那是您的问题,我不太确定,因为您的问题没有提供有关您具体问题的更多信息)

此外,您有一个数组数组,因此您需要提取您感兴趣的数据,例如:

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

但这只是示范性的。

答案 2 :(得分:0)

为什么不回显$ gather_data_sql,并在IDE上进行测试,看看你的SQL是否正确。我相信你的错误是在你所处的条件下开始的。