Php 多维数组输出。请帮我把这堆乱七八糟的东西取出来,循环一下
我有一个很棒的MySQL查询,它返回给我一个很棒的数组>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 '
$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。你能建议一下吗?我已经更新了答案以包含输入,可能有一些细微的差别。