2015-05-29 236 views
-1

我查询我的数据库与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++; 

} 

任何帮助将是伟大的!谢谢

+2

*我查询我的数据库......并删除重复*修复你的查询语句,看看组 – donald123

+2

只是移动'$ form = array();'上面的for循环不在里面 –

回答

0

在您的代码中,每次发生迭代时都会初始化数组$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