2017-02-23 6 views
-2

にある特定の列のデータを取得する必要があり、私の配列は、私はちょうど1 array..below内のデータを印刷する必要がある1つのアレイ

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 
     ) 
    ) 
) 

上記配列の参照にその月の10月を示す2回と9月2ですディーラーは異なりますし、値が異なるので、私は10月のデータが1つの配列にあり、9月のデータが1つの配列に両方の月に必要です。

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

Tidyのコードあなたは」投稿されました。これまでに試したことと何が問題になっているのかを教えてください。 – 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_idまたはyear-month-dealer-valueの値が重複していると、foreachループで新しい配列を作成した結果、以前の値が上書きされます。

複数の年、複数の月、または複数のディーラーがある場合、データは新しい連想キー名のために に分割され、簡単にアクセスできます。例えば

、あなたは特にあなたが使用16OctDS950ためmod_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>"; 
} 
関連する問題