2017-02-28 140 views
0

我找過去3個月狀態明智data.I都狀態碼的排列和最後3個月陣列具有以下值的兩個數組值,PHP的發現結果多維數組

$stateArray = array("Nj","va","Ca","BS","TS"); 
$MonthArray =array("Nov 2016","Dec 2016","Jan 2017"); 

下面是我的結果從數據庫中取數組,

Array ( 
     [0] => Array ( 
      [month] => Nov 2016 
      [count] => 150 
      [state] => NJ 
     ) 
     [1] => Array ( 
      [month] => Nov 2016 
      [count] => 100 
      [state] => va 
     ) 
    ) 
     I want result like below, 

     Array(
       [Nj] => Array(
         [0] => Array(
            [month] => Nov 2016 
            [count] => 150 
            ) 
         [1] => Array(
            [month] => Dec 2016 
            [count] => 0 
            ) 
         [2] => Array(
            [month] => jan 2017 
            [count] => 0 
            ) 
        ) 
       [Ca] => Array(
         [0] => Array(
            [month] => Nov 2016 
            [count] => 0 
            ) 
         [1] => Array(
            [month] => Dec 2016 
            [count] => 0 
            ) 
         [2] => Array(
            [month] => jan 2017 
            [count] => 0 
            ) 
        ) 
       [va] => Array(
         [0] => Array(
            [month] => Nov 2016 
            [count] => 100 
            ) 
         [1] => Array(
            [month] => Dec 2016 
            [count] => 0 
            ) 
         [2] => Array(
            [month] => jan 2017 
            [count] => 0 
            ) 
        ) 
      ) 

等等所有狀態。

我試圖陣列array_search()併爲每個in_array()功能,但它不是我working.What想實現循環每個狀態明智array.Below我想爲循環,

foreach ($result_array as $val) { 
    $month = array_search ($val ['month'], $monthArray); 
    $state = array_search ($val ['state'], $stateArray); 
    if ($val ['count'] == '' || $val ['count'] == 'NULL') { 
     $countValue = 0; 
    } else { 
     $countValue = $val ['count']; 
    } 
    $final_array [] = $countValue; 
} 
+0

所有這些模式不是有效的PHP:'$ VAL [ '月']'。刪除變量名和括號之間的空白字符。 – arkascha

+0

好吧,我刪除了這個空白區域,但預計結果沒有得到。 – bdevloper

回答

1

乘坐看這個簡單的例子:

<?php 
$input = [ 
    [ 
     'month' => "Nov 2016", 
     'count' => "150", 
     'state' => "NJ" 
    ], 
    [ 
     'month' => "Nov 2016", 
     'count' => "100", 
     'state' => "va" 
    ], 
    [ 
     'month' => "Dec 2016", 
     'count' => "270", 
     'state' => "NJ" 
    ], 
]; 
$output = []; 
foreach (["Nj", "va", "Ca", "BS", "TS"] as $state) { 
    $output[strtoupper($state)] = []; 
}; 

array_walk($input, function($entry) use (&$output) { 
    $output[strtoupper($entry['state'])][] = [ 
     'month' => $entry['month'], 
     'count' => $entry['count'] 
    ]; 
}); 

print_r($output); 

上述代碼的結果是:

Array 
(
    [NJ] => Array 
     (
      [0] => Array 
       (
        [month] => Nov 2016 
        [count] => 150 
       ) 

      [1] => Array 
       (
        [month] => Dec 2016 
        [count] => 270 
       ) 

     ) 

    [VA] => Array 
     (
      [0] => Array 
       (
        [month] => Nov 2016 
        [count] => 100 
       ) 

     ) 

    [CA] => Array 
     (
     ) 

    [BS] => Array 
     (
     ) 

    [TS] => Array 
     (
     ) 

) 

這似乎是你問的確切輸出結構。

+0

我們已經設置了狀態和蛾類。我們必須循環每個月份的設置。 – bdevloper

+0

@bhagwanpawar當然,我明白你的問題。該示例_does_循環給定結果集中的所有條目。你想說你的結果集不包含狀態和月份的所有組合的條目嗎?所以你有不完整的數據? – arkascha

+0

我們要追加零結果集,這些都不是在合成陣列 – bdevloper

1
 $stateArray = array("Nj","va","Ca","BS","TS"); 
    $MonthArray =array("Nov 2016","Dec 2016","Jan 2017"); 
    $fromDB = Array (
     Array (
      'month' => 'Nov 2016', 
      'count' => 150, 
      'state' => 'NJ' 
      ), 
     Array (
      'month' => 'Nov 2016', 
      'count' => 100, 
      'state' => 'va' 
      ) 
     ); 
    $info = array(); 
    foreach ($fromDB as $row){ 
     $info[strtoupper($row['state'])][$row['month']] = $row['count']; 
    } 
    $result = array(); 
    foreach ($stateArray as $state){ 
     foreach ($MonthArray as $month){ 
      $result[$state][]=array('month'=>$month, 'count'=>isset($info[strtoupper($state)][$month])?$info[strtoupper($state)][$month]:0); 
     } 
    } 
print_r($result); 

將輸出

Array 
(
    [Nj] => Array 
     (
      [0] => Array 
       (
        [month] => Nov 2016 
        [count] => 150 
       ) 

      [1] => Array 
       (
        [month] => Dec 2016 
        [count] => 0 
       ) 

      [2] => Array 
       (
        [month] => Jan 2017 
        [count] => 0 
       ) 

     ) 

    [va] => Array 
     (
      [0] => Array 
       (
        [month] => Nov 2016 
        [count] => 100 
       ) 

      [1] => Array 
       (
        [month] => Dec 2016 
        [count] => 0 
       ) 

      [2] => Array 
       (
        [month] => Jan 2017 
        [count] => 0 
       ) 

     ) 

    [Ca] => Array 
     (
      [0] => Array 
       (
        [month] => Nov 2016 
        [count] => 0 
       ) 

      [1] => Array 
       (
        [month] => Dec 2016 
        [count] => 0 
       ) 

      [2] => Array 
       (
        [month] => Jan 2017 
        [count] => 0 
       ) 

     ) 

    [BS] => Array 
     (
      [0] => Array 
       (
        [month] => Nov 2016 
        [count] => 0 
       ) 

      [1] => Array 
       (
        [month] => Dec 2016 
        [count] => 0 
       ) 

      [2] => Array 
       (
        [month] => Jan 2017 
        [count] => 0 
       ) 

     ) 

    [TS] => Array 
     (
      [0] => Array 
       (
        [month] => Nov 2016 
        [count] => 0 
       ) 

      [1] => Array 
       (
        [month] => Dec 2016 
        [count] => 0 
       ) 

      [2] => Array 
       (
        [month] => Jan 2017 
        [count] => 0 
       ) 

     ) 

) 
+0

謝謝АндрейТанечник,這是我想要的。非常感謝你 – bdevloper