Php 多维数组输出。请帮我把这堆乱七八糟的东西取出来,循环一下

Php 多维数组输出。请帮我把这堆乱七八糟的东西取出来,循环一下,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我有一个很棒的MySQL查询,它返回给我一个很棒的数组> $join_sql = "SELECT $detail_table.`lead_id`, $detail_table.`field_number`, $detail_table.`value` FROM $lead_table JOIN $detail_table ON $lead_table.`id` = $detail_table.`lead_id` WHERE $lead_table.`date_created` BETWEEN '

我有一个很棒的MySQL查询,它返回给我一个很棒的数组>

$join_sql = "SELECT $detail_table.`lead_id`, $detail_table.`field_number`, $detail_table.`value` FROM $lead_table JOIN $detail_table ON $lead_table.`id` = $detail_table.`lead_id` WHERE $lead_table.`date_created` BETWEEN '2012-03-18 00:00:00' AND '2012-03-19 23:59:59'";
$join_query = $wpdb->get_results($join_sql, ARRAY_A);
这将返回一个(我认为)复杂的关联数组,如下所示-

(我不了解数据存储方法,但对于我来说,将每一位数据都放在自己的维数组中,而不仅仅是每个记录的一行数据,这似乎太复杂了。但无论如何,这是我必须处理的。)

因此,这里有一个我需要获得的小样本>

[23] => Array ( [lead_id] => 3 [field_number] => 6.3 [value] => Jane )
因此,在我心目中代表“记录”的关键是[lead_id]。我需要能够创建一个var$first\u名称。我的结果集可能有50个唯一的[lead_id},但对于名字,[field_number]将始终为“6.3”

那么,我如何循环使用pastebin并为每个元素创建变量,以便所有具有匹配编号的[lead_id]都输出类似的结果呢-

$first_name, $last_name, $whatev, $foo, $bar, $etc
我甚至不确定这是否有意义…:\

编辑:我想做的是访问“字段号”,它对应于字段的内容,即:名字、第二个名字等,以及相应的“值”,并按照与“lead_id”匹配的特定顺序输出所有这些内容。因此,[2]的所有lead_id将输出到CSV的一行中,然后输出下一个lead_id,等等


提前感谢!

鉴于您在
$xs
中的输入,以下内容:

$ret = array_reduce($xs, function($acc,$x) {
    $acc[$x['lead_id']][$x['field_number']] = $x['value'];
    return $acc;
}, array());
生成以下内容的输出:

array (
  2 => 
  array (
    1 => '37',
    2 => '051000549',
    3 => '1050000605321',
    4 => '1050000605321',
    15 => '250.00',
    '6.3' => 'John',
    '6.6' => 'Doe',
    7 => 'Microscope',
    '8.1' => '1222 McDowell Ave NE',
    '8.3' => 'Roanoke',
    '8.4' => 'Virginia',
    '8.5' => '24012',
    '8.6' => 'United States',
    9 => '(540)265-3216',
    10 => 'marty@microscope.com',
    11 => 'John Doe',
    16 => '987654321',
    '14.1' => 'Authorized',
  ),
  3 => 
  array (
    1 => '27',
    2 => '987654321',
    3 => '1050000123456',
    4 => '1050000123456',
    15 => '350.00',
    '6.3' => 'Jane',
    '6.6' => 'Doe',
    7 => 'Acme Inc',
    '8.1' => '6724 Laban Rd',
    '8.3' => 'Roanoke',
    '8.4' => 'Virginia',
    '8.5' => '24019',
    '8.6' => 'United States',
    9 => '(540)362-2773',
    10 => 'm@seoserpent.com',
    11 => 'Acme Inc.',
    16 => '987654321',
    '14.1' => 'Authorized',
  ),
)
更新:我使用的输入是:

$xs = array ( 
 0 => array ( 'lead_id' => '2', 'field_number' => '1', 'value' => '37', ),
 1 => array ( 'lead_id' => '2', 'field_number' => '2', 'value' => '051000549', ),
 2 => array ( 'lead_id' => '2', 'field_number' => '3', 'value' => '1050000605321', ),
 3 => array ( 'lead_id' => '2', 'field_number' => '4', 'value' => '1050000605321', ),
 4 => array ( 'lead_id' => '2', 'field_number' => '15', 'value' => '250.00', ),
 5 => array ( 'lead_id' => '2', 'field_number' => '6.3', 'value' => 'John', ),
 6 => array ( 'lead_id' => '2', 'field_number' => '6.6', 'value' => 'Doe', ),
 7 => array ( 'lead_id' => '2', 'field_number' => '7', 'value' => 'Microscope', ),
 8 => array ( 'lead_id' => '2', 'field_number' => '8.1', 'value' => '1222 McDowell Ave NE', ),
 9 => array ( 'lead_id' => '2', 'field_number' => '8.3', 'value' => 'Roanoke', ),
 10 => array ( 'lead_id' => '2', 'field_number' => '8.4', 'value' => 'Virginia', ),
 11 => array ( 'lead_id' => '2', 'field_number' => '8.5', 'value' => '24012', ),
 12 => array ( 'lead_id' => '2', 'field_number' => '8.6', 'value' => 'United States', ),
 13 => array ( 'lead_id' => '2', 'field_number' => '9', 'value' => '(540)265-3216', ),
 14 => array ( 'lead_id' => '2', 'field_number' => '10', 'value' => 'marty@microscope.com', ),
 15 => array ( 'lead_id' => '2', 'field_number' => '11', 'value' => 'John Doe', ),
 16 => array ( 'lead_id' => '2', 'field_number' => '16', 'value' => '987654321', ),
 17 => array ( 'lead_id' => '2', 'field_number' => '14.1', 'value' => 'Authorized', ),
 18 => array ( 'lead_id' => '3', 'field_number' => '1', 'value' => '27', ),
 19 => array ( 'lead_id' => '3', 'field_number' => '2', 'value' => '987654321', ),
 20 => array ( 'lead_id' => '3', 'field_number' => '3', 'value' => '1050000123456', ),
 21 => array ( 'lead_id' => '3', 'field_number' => '4', 'value' => '1050000123456', ),
 22 => array ( 'lead_id' => '3', 'field_number' => '15', 'value' => '350.00', ),
 23 => array ( 'lead_id' => '3', 'field_number' => '6.3', 'value' => 'Jane', ),
 24 => array ( 'lead_id' => '3', 'field_number' => '6.6', 'value' => 'Doe', ),
 25 => array ( 'lead_id' => '3', 'field_number' => '7', 'value' => 'Acme Inc', ),
 26 => array ( 'lead_id' => '3', 'field_number' => '8.1', 'value' => '6724 Laban Rd', ),
 27 => array ( 'lead_id' => '3', 'field_number' => '8.3', 'value' => 'Roanoke', ),
 28 => array ( 'lead_id' => '3', 'field_number' => '8.4', 'value' => 'Virginia', ),
 29 => array ( 'lead_id' => '3', 'field_number' => '8.5', 'value' => '24019', ),
 30 => array ( 'lead_id' => '3', 'field_number' => '8.6', 'value' => 'United States', ),
 31 => array ( 'lead_id' => '3', 'field_number' => '9', 'value' => '(540)362-2773', ),
 32 => array ( 'lead_id' => '3', 'field_number' => '10', 'value' => 'm@seoserpent.com', ),
 33 => array ( 'lead_id' => '3', 'field_number' => '11', 'value' => 'Acme Inc.', ),
 34 => array ( 'lead_id' => '3', 'field_number' => '16', 'value' => '987654321', ),
 35 => array ( 'lead_id' => '3', 'field_number' => '14.1', 'value' => 'Authorized', ),
 );
此外,您可能会发现
foreach
while
循环比
array\u reduce
更可读:

$ret = array();
foreach ($xs as $x) {
    $ret[$x['lead_id']][$x['field_number']] = $x['value'];
}

$xs
中输入以下内容:

$ret = array_reduce($xs, function($acc,$x) {
    $acc[$x['lead_id']][$x['field_number']] = $x['value'];
    return $acc;
}, array());
生成以下内容的输出:

array (
  2 => 
  array (
    1 => '37',
    2 => '051000549',
    3 => '1050000605321',
    4 => '1050000605321',
    15 => '250.00',
    '6.3' => 'John',
    '6.6' => 'Doe',
    7 => 'Microscope',
    '8.1' => '1222 McDowell Ave NE',
    '8.3' => 'Roanoke',
    '8.4' => 'Virginia',
    '8.5' => '24012',
    '8.6' => 'United States',
    9 => '(540)265-3216',
    10 => 'marty@microscope.com',
    11 => 'John Doe',
    16 => '987654321',
    '14.1' => 'Authorized',
  ),
  3 => 
  array (
    1 => '27',
    2 => '987654321',
    3 => '1050000123456',
    4 => '1050000123456',
    15 => '350.00',
    '6.3' => 'Jane',
    '6.6' => 'Doe',
    7 => 'Acme Inc',
    '8.1' => '6724 Laban Rd',
    '8.3' => 'Roanoke',
    '8.4' => 'Virginia',
    '8.5' => '24019',
    '8.6' => 'United States',
    9 => '(540)362-2773',
    10 => 'm@seoserpent.com',
    11 => 'Acme Inc.',
    16 => '987654321',
    '14.1' => 'Authorized',
  ),
)
更新:我使用的输入是:

$xs = array ( 
 0 => array ( 'lead_id' => '2', 'field_number' => '1', 'value' => '37', ),
 1 => array ( 'lead_id' => '2', 'field_number' => '2', 'value' => '051000549', ),
 2 => array ( 'lead_id' => '2', 'field_number' => '3', 'value' => '1050000605321', ),
 3 => array ( 'lead_id' => '2', 'field_number' => '4', 'value' => '1050000605321', ),
 4 => array ( 'lead_id' => '2', 'field_number' => '15', 'value' => '250.00', ),
 5 => array ( 'lead_id' => '2', 'field_number' => '6.3', 'value' => 'John', ),
 6 => array ( 'lead_id' => '2', 'field_number' => '6.6', 'value' => 'Doe', ),
 7 => array ( 'lead_id' => '2', 'field_number' => '7', 'value' => 'Microscope', ),
 8 => array ( 'lead_id' => '2', 'field_number' => '8.1', 'value' => '1222 McDowell Ave NE', ),
 9 => array ( 'lead_id' => '2', 'field_number' => '8.3', 'value' => 'Roanoke', ),
 10 => array ( 'lead_id' => '2', 'field_number' => '8.4', 'value' => 'Virginia', ),
 11 => array ( 'lead_id' => '2', 'field_number' => '8.5', 'value' => '24012', ),
 12 => array ( 'lead_id' => '2', 'field_number' => '8.6', 'value' => 'United States', ),
 13 => array ( 'lead_id' => '2', 'field_number' => '9', 'value' => '(540)265-3216', ),
 14 => array ( 'lead_id' => '2', 'field_number' => '10', 'value' => 'marty@microscope.com', ),
 15 => array ( 'lead_id' => '2', 'field_number' => '11', 'value' => 'John Doe', ),
 16 => array ( 'lead_id' => '2', 'field_number' => '16', 'value' => '987654321', ),
 17 => array ( 'lead_id' => '2', 'field_number' => '14.1', 'value' => 'Authorized', ),
 18 => array ( 'lead_id' => '3', 'field_number' => '1', 'value' => '27', ),
 19 => array ( 'lead_id' => '3', 'field_number' => '2', 'value' => '987654321', ),
 20 => array ( 'lead_id' => '3', 'field_number' => '3', 'value' => '1050000123456', ),
 21 => array ( 'lead_id' => '3', 'field_number' => '4', 'value' => '1050000123456', ),
 22 => array ( 'lead_id' => '3', 'field_number' => '15', 'value' => '350.00', ),
 23 => array ( 'lead_id' => '3', 'field_number' => '6.3', 'value' => 'Jane', ),
 24 => array ( 'lead_id' => '3', 'field_number' => '6.6', 'value' => 'Doe', ),
 25 => array ( 'lead_id' => '3', 'field_number' => '7', 'value' => 'Acme Inc', ),
 26 => array ( 'lead_id' => '3', 'field_number' => '8.1', 'value' => '6724 Laban Rd', ),
 27 => array ( 'lead_id' => '3', 'field_number' => '8.3', 'value' => 'Roanoke', ),
 28 => array ( 'lead_id' => '3', 'field_number' => '8.4', 'value' => 'Virginia', ),
 29 => array ( 'lead_id' => '3', 'field_number' => '8.5', 'value' => '24019', ),
 30 => array ( 'lead_id' => '3', 'field_number' => '8.6', 'value' => 'United States', ),
 31 => array ( 'lead_id' => '3', 'field_number' => '9', 'value' => '(540)362-2773', ),
 32 => array ( 'lead_id' => '3', 'field_number' => '10', 'value' => 'm@seoserpent.com', ),
 33 => array ( 'lead_id' => '3', 'field_number' => '11', 'value' => 'Acme Inc.', ),
 34 => array ( 'lead_id' => '3', 'field_number' => '16', 'value' => '987654321', ),
 35 => array ( 'lead_id' => '3', 'field_number' => '14.1', 'value' => 'Authorized', ),
 );
此外,您可能会发现
foreach
while
循环比
array\u reduce
更可读:

$ret = array();
foreach ($xs as $x) {
    $ret[$x['lead_id']][$x['field_number']] = $x['value'];
}

这个问题的标题准确得令人沮丧。我知道你想得到什么,但你理想的最终结果是什么?对数组进行
var\u导出
,这样我们就可以复制粘贴数组并使用它了。:)这是var\u导出-@mikevoermans,最终我将创建一个可以下载的CSV数据。这是这个问题的标题estion的准确度令人沮丧我知道你想要得到什么,但你理想的最终结果是什么?对数组进行
var\u导出
,这样我们就可以复制粘贴数组并使用它了。:)这是var\u导出-@mikevoermans最终我将创建一个可以下载的CSV数据这正是我要做的。但是不确定$xs的值。我从我的示例中将其更改为$join_query,但在var_转储时只返回NULL。您能提供建议吗?我已经更新了答案以包含输入,可能有一些细微的差异。这正是我正在尝试做的。但是不确定$xs的值。我将其更改为$join_query在我的例子中,它只是在一个var_转储上返回NULL。你能建议一下吗?我已经更新了答案以包含输入,可能有一些细微的差别。