2017-02-23 61 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>"; 
} 
相关问题