2017-02-23 33 views
-2

我只需要在一個array..below打印的數據是我的數組需要得到的數據對於一個特定的列在一個陣列

Array (
    [sales_data] => Array (
     [0] => Array (
      [dealer] => DS949 
      [value] => 35 
      [mod_id] => s01 
      [month] => Oct 
      [year] => 16 
     ), 
     [1] => Array (
      [dealer] => DS950 
      [value] => 80 
      [mod_id] => s01 
      [month] => Oct 
      [year] => 16 
     ), 
     [2] => Array (
      [dealer] => DS949 
      [value] => 25 
      [mod_id] => s01 
      [month] => Sep 
      [year] => 16 
     ), 
     [3] => Array (
      [dealer] => DS950 
      [value] => 55 
      [mod_id] => s01 
      [month] => Sep 
      [year] => 16 
     ) 
    ) 
) 

見上文陣列顯示其每月月兩次和九月2但經銷商是不同的,價值是不同的,所以,我需要一個數組中的10月數據和兩個月的一個數組中的9月數據。

Array (
    [sales_data] => Array (
     [0] => Array (
      [dealer] => DS949 
      [value] => 35 
      [dealer] => DS950 
      [value] => 80 
      [mod_id] => s01 
      [month] => Oct 
      [year] => 16 
     ), 
     [1] => Array (
      [dealer] => DS949 
      [value] => 25 
      [dealer] => DS950 
      [value] => 55 
      [mod_id] => s01 
      [month] => Sep 
      [year] => 16 
     ) 
    ) 
) 

這裏是我的代碼:

$all_custom_data = $this->front_model->get_period_data($mod_id,$month,$year,$manu,$city); 
    array_push($all_custom_dataarr, $all_custom_data); 
} 
$arrFinal=array(); 
$i=0; 
$month=array(); 
foreach($all_custom_dataarr as $custom_data1){ 
    foreach($custom_data1 as $custom_data){ 
     $month[]=$custom_data->month; 
     $arrFinal[$i]['dealer']=$custom_data->dealer; 
     $arrFinal[$i]['value']=$custom_data->value; 
     $arrFinal[$i]['mod_id']=$custom_data->mod_id; 
     $arrFinal[$i]['month']=$custom_data->month; 
     $arrFinal[$i]['year']=$custom_data->year; 
     $i++; 
    } 
} 

$data['sales_data']=array_unique($arrFinal, SORT_REGULAR); 
print_r($data); 
+0

整齊你的代碼」已發佈。向我們展示您目前爲止所嘗試的以及您遇到的問題。 – JustBaron

+0

@amrinder這是不可能的,因爲密鑰是相同的。並覆蓋值 –

+0

我用編碼編輯了我的問題。請看看這個,因爲這對我來說非常重要。 – amrinder

回答

0

Amrinder,我覺得這是組織陣列,這樣就可以刪除重複,容易在將來訪問數組的最佳方式。

$all_custom_dataarr=array(
    "sales_data"=>array(
     0=>array(
      "dealer"=>"DS949", 
      "value"=>"35", 
      "mod_id"=>"s01", 
      "month"=>"Oct", 
      "year"=>"16" 
     ), 
     1=>array(
      "dealer"=>"DS950", 
      "value"=>"80", 
      "mod_id"=>"s01", 
      "month"=>"Oct", 
      "year"=>"16" 
     ), 
     2=>array(
      "dealer"=>"DS949", 
      "value"=>"25", 
      "mod_id"=>"s01", 
      "month"=>"Sep", 
      "year"=>"16" 
     ), 
     3=>array(
      "dealer"=>"DS950", 
      "value"=>"55", 
      "mod_id"=>"s01", 
      "month"=>"Sep", 
      "year"=>"16" 
     ) 
    ) 
); 

foreach($all_custom_dataarr["sales_data"] as $array){ 
    $new_array[$array["year"]][$array["month"]][$array["dealer"]]["mod_id"]=$array["mod_id"]; 
    $new_array[$array["year"]][$array["month"]][$array["dealer"]]["value"]=$array["value"]; 
} 

echo "<pre>"; 
var_export($new_array); 
echo "</pre>"; 

產量...

$new_array = array(
       16 => array(
        'Oct' => array(
         'DS949' => array('mod_id'=>'s01','value'=>'35'), 
         'DS950' => array('mod_id'=>'s01','value'=>'80') 
        ), 
        'Sep' => array(
         'DS949' => array('mod_id'=>'s01','value'=>'25'), 
         'DS950' => array('mod_id'=>'s01','value'=>'55'), 
        ), 
       ), 
      ); 

此數組結構允許用戶在邏輯組值和子陣列使用的唯一密鑰。

如果有任何重複的year-month-dealer-mod_idyear-month-dealer-value值,它們將覆蓋較早的值(作爲在foreach循環中構建新數組的結果)。

如果您有多年,或多個月或多個經銷商,數據將被分開 並且由於新的關聯密鑰名稱而易於訪問。

例如,如果您特別想知道的16OctDS950mod_idvalue值使用:

$new_array["16"]["Oct"]["DS950"]["mod_id"]$new_array["16"]["Oct"]["DS950"]["value"]

foreach($new_array["16"]["Oct"]["DS950"] as $key=>$value){ 
    echo "$key = $value<br>"; 
} 
相關問題