PHP创建多维数组
问题描述:
我查询我的数据库与LEFT JOIN获得以下数组:PHP创建多维数组
Array
(
[invoice_number] => 000010
[invoice_date] => 1432764000
[country] => 115
[fao] => Rick
[company_name] => Chubbs
[address_line_1] => kjhk
[address_line_2] => jh
[town] => kjh
[postcode] => kjh
[filename] => INV-1432820860.pdf
[id] => 11
[description] => dfgh
[rates] => 2
[quantity] => 3
[price] => 6
[created] => 0
[country_name] => Kazakhstan
)
Array
(
[invoice_number] => 000010
[invoice_date] => 1432764000
[country] => 115
[fao] => Rick
[company_name] => Chubbs
[address_line_1] => kjhk
[address_line_2] => jh
[town] => kjh
[postcode] => kjh
[filename] => INV-1432820860.pdf
[id] => 18
[description] => biscuits
[rates] => 2
[quantity] => 3
[price] => 6
[created] => 0
[country_name] => Kazakhstan
)
我通过这次要循环并删除重复,所以是这样的:
Array
(
['inv_details'] => array(
[invoice_number] => 000010
[invoice_date] => 1432764000
[country] => 115
[fao] => Rick
[company_name] => Chubbs
[address_line_1] => kjhk
[address_line_2] => jh
[town] => kjh
[postcode] => kjh
[filename] => INV-1432820860.pdf
)
['items'] => array(
[0] => array(
[description] => dfgh
[rates] => 2
[quantity] => 3
[price] => 6
[created] => 0
)
[1] => array(
[description] => biscuits
[rates] => 2
[quantity] => 3
[price] => 6
[created] => 0
)
)
)
我有这样的代码的时刻,但该项目数组不加入两个数组中的最后一项ovewrites第一个,我不与2个数组中的项目,刚一结束:
$i = 0;
foreach($res->fetchAll(PDO::FETCH_ASSOC) as $row){
$form = array();
$form['title'] = $row['invoice_number'];
$form['inv_details']['invoice_date'] = array('value'=>gmdate('d/m/Y', $row['invoice_date']), 'type'=>'date');
$form['inv_details']['company_name'] = array('value' => $row['company_name'], 'type' => 'text');
$form['inv_details']['fao'] = array('value' => $row['fao'], 'type' => 'text');
$form['inv_details']['address_line_1'] = array('value' => $row['address_line_1'], 'type' => 'text');
$form['inv_details']['address_line_2'] = array('value' => $row['address_line_2'], 'type' => 'text');
$form['inv_details']['town'] = array('value' => $row['town'], 'type' => 'text');
$form['inv_details']['postcode'] = array('value' => $row['postcode'], 'type' => 'text');
//$form['inv_details']['countries'] = $this->crm_account_address->getCountries();
$form['country'] = $row['country_name'];
$form['country_id'] = $row['id'];
$form['items'][$i]['description'] = $row['description'];
$form['items'][$i]['rates'] = $row['rates'];
$form['items'][$i]['quantity'] = $row['quantity'];
$form['items'][$i]['price'] = $row['price'];
//counter
$i++;
}
任何帮助将是伟大的!谢谢
答
在您的代码中,每次发生迭代时都会初始化数组$form
。所以之前的数据是用空白数组重新写入的。
因此,保持了数组初始化上面你的for循环,使其在第一这样
$i = 0;
$form = array();
foreach($res->fetchAll(PDO::FETCH_ASSOC) as $row){
$form['title'] = $row['invoice_number'];
$form['inv_details']['invoice_date'] = array('value'=>gmdate('d/m/Y', $row['invoice_date']), 'type'=>'date');
$form['inv_details']['company_name'] = array('value' => $row['company_name'], 'type' => 'text');
$form['inv_details']['fao'] = array('value' => $row['fao'], 'type' => 'text');
$form['inv_details']['address_line_1'] = array('value' => $row['address_line_1'], 'type' => 'text');
$form['inv_details']['address_line_2'] = array('value' => $row['address_line_2'], 'type' => 'text');
$form['inv_details']['town'] = array('value' => $row['town'], 'type' => 'text');
$form['inv_details']['postcode'] = array('value' => $row['postcode'], 'type' => 'text');
//$form['inv_details']['countries'] = $this->crm_account_address->getCountries();
$form['country'] = $row['country_name'];
$form['country_id'] = $row['id'];
$form['items'][$i]['description'] = $row['description'];
$form['items'][$i]['rates'] = $row['rates'];
$form['items'][$i]['quantity'] = $row['quantity'];
$form['items'][$i]['price'] = $row['price'];
//counter
$i++;
}
初始化这将工作
+0
不能相信我把$ form数组放在循环中!愚蠢的错误!谢谢您的帮助! – Richard
*我查询我的数据库......并删除重复*修复你的查询语句,看看组 – donald123
只是移动'$ form = array();'上面的for循环不在里面 –