【问题标题】:How do i parse this array?我如何解析这个数组?
【发布时间】:2012-03-15 15:47:13
【问题描述】:

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

但这没有用。

【问题讨论】:

  • 这不能回答你的问题,但为什么不做一个 JOIN 而不是多次调用那个查询呢?
  • 那行不通 - 你的输出是什么?

标签: php arrays list


【解决方案1】:

如果您使用的功能不是很清楚,请查看手册。 list 需要一个具有从 0 开始的数字索引的数组。您可以使用 array_values 将数组从字符串键转换为数字键:

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

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

另外你有一个数组的数组,所以你还需要提取你感兴趣的数据,例如:

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

但这只是示范。

【讨论】:

    【解决方案2】:

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

    时才有效

    您将需要遍历结果并从“值”键中提取值。

    【讨论】:

      【解决方案3】:

      您为什么不回显您的 $collected_data_sql,然后在 IDE 上进行测试,看看您的 SQL 是否正确。我相信你的错误是在你的 where 条件下开始的。

      【讨论】:

        猜你喜欢
        • 2014-11-09
        • 1970-01-01
        • 2018-07-22
        • 2013-10-10
        • 2021-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        相关资源
        最近更新 更多