需要获取一个数组中某个特定列的数据

时间:2017-02-23 12:49:10

标签: php arrays

我只需要在一个数组中打印数据。下面是我的数组

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次但经销商不同而且价值不同所以,我需要一个数组中的Oct数据和一个数组中的Sep数据两个月。

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

1 个答案:

答案 0 :(得分: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循环中构建新数组)。

如果您有多年,或多个月或多个经销商,数据将被分开         并且由于新的关联键名称而易于访问。

例如,如果您特别想知道mod_id valueDS950的{​​{1}}和Oct值,请使用:

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

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