2016-04-04 9 views
0

私は処理しているデータがあります。私はマージしている配列がある段階に達しました。 私の問題は、必要な配列の量が動的であることと、設定した量のデータを処理するためのコードを取得したにもかかわらず、それらのカウンタすべてと少し混乱していて、繰り返しコードがあることです。 私はそれらの配列を何らかの形で動的に生成する必要があると思いますが、どうすればよいかわかりません。 は、ここで私は3つのアレイ(ループ)がある場合、完璧な作品に私のコードです:私はループに2つの配列を持っている場合PHPでダイナミック配列をマージ

ここ
$dataonlyarray = array(); 
$dataonlyarray2 = array(); 
$dataonlyarray3 = array(); 
$dataonlyarray4 = array(); 

     for ($i = 0; $i < sizeof($main_prod_arr); $i++) { 
      $dataonlyarray2[] = array_slice($main_prod_arr[$i],0,$startingdatecolumn); 
      $dataonlyarray3[] = array_slice($main_prod_arr[$i],0,$startingdatecolumn); 
      $dataonlyarray4[] = array_slice($main_prod_arr[$i],0,$startingdatecolumn);  
      } 

     for ($i = 0; $i < sizeof($main_prod_arr); $i++) { 
      array_push($dataonlyarray2[$i],$main_prod_arr[$i][$startingdatecolumn]);  
      array_push($dataonlyarray2[$i],$main_prod_arr[$i][$startingdatecolumn]+1); 
      array_push($dataonlyarray2[$i],substr($headers_arr[$startingdatecolumn],0,10));   
      } 


     for ($i = 0; $i < sizeof($main_prod_arr); $i++) { 
      array_push($dataonlyarray3[$i],$main_prod_arr[$i][$startingdatecolumn]+2); 
      array_push($dataonlyarray3[$i],$main_prod_arr[$i][$startingdatecolumn]+3); 
      array_push($dataonlyarray3[$i],substr($headers_arr[$startingdatecolumn+3],0,10));  
      } 

     for ($i = 0; $i < sizeof($main_prod_arr); $i++) { 
      array_push($dataonlyarray4[$i],$main_prod_arr[$i][$startingdatecolumn]+4); 
      array_push($dataonlyarray4[$i],$main_prod_arr[$i][$startingdatecolumn]+5); 
      array_push($dataonlyarray4[$i],substr($headers_arr[$startingdatecolumn+5],0,10));  
      }   


      $dataonlyarrayall[] = array_merge($dataonlyarray2,$dataonlyarray3,$dataonlyarray4); 


echo '<pre>'; print_r($dataonlyarrayall); 
echo '</pre>'; 

は私のコードですが(正常に動作します):あなたのよう

$dataonlyarray = array(); 
$dataonlyarray2 = array(); 
$dataonlyarray3 = array(); 

     for ($i = 0; $i < sizeof($main_prod_arr); $i++) { 
      $dataonlyarray2[] = array_slice($main_prod_arr[$i],0,$startingdatecolumn); 
      $dataonlyarray3[] = array_slice($main_prod_arr[$i],0,$startingdatecolumn);  
      } 

     for ($i = 0; $i < sizeof($main_prod_arr); $i++) { 
      array_push($dataonlyarray2[$i],$main_prod_arr[$i][$startingdatecolumn]);  
      array_push($dataonlyarray2[$i],$main_prod_arr[$i][$startingdatecolumn]+1); 
      array_push($dataonlyarray2[$i],substr($headers_arr[$startingdatecolumn],0,10));   
      } 


     for ($i = 0; $i < sizeof($main_prod_arr); $i++) { 
      array_push($dataonlyarray3[$i],$main_prod_arr[$i][$startingdatecolumn]+2); 
      array_push($dataonlyarray3[$i],$main_prod_arr[$i][$startingdatecolumn]+3); 
      array_push($dataonlyarray3[$i],substr($headers_arr[$startingdatecolumn+3],0,10));  
      } 



      $dataonlyarrayall[] = array_merge($dataonlyarray2,$dataonlyarray3); 

echo '<pre>'; print_r($dataonlyarrayall); 
echo '</pre>'; 

:ここ

が2つの製品、3つの日付(必要な3つのループ)での$ main_prod_arr(のサンプル..ですすべての新しい配列内でインクリメントする必要があるいくつかの値があるでしょうここ

2つの製品及び3つの日付(必須3つのループ)と($ headers_arrのサンプルである: アレイ

(
    [0] => ItemNbr 
    [1] => ItemDesc 
    [2] => 2016/01/01 Qty 
    [3] => 2016/01/01 Sales 
    [4] => 2016/01/02 Qty 
    [5] => 2016/01/02 Sales 
    [6] => 2016/01/03 Qty 
    [7] => 2016/01/03 Sales 
) 

これは、上記アレイの場合expecrted出力()である:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => Array 
         (
          [0] => 2602721 
          [1] => Product1 
          [2] => 11 
          [3] => 12 
          [4] => 2016/01/01 
         ) 

        [1] => Array 
         (
          [0] => 2616122 
          [1] => Product2 
          [2] => 21 
          [3] => 22 
          [4] => 2016/01/01 
         ) 

        [2] => Array 
         (
          [0] => 2602721 
          [1] => Product1 
          [2] => 13 
          [3] => 14 
          [4] => 2016/01/02 
         ) 

        [3] => Array 
         (
          [0] => 2616122 
          [1] => Product2 
          [2] => 23 
          [3] => 24 
          [4] => 2016/01/02 
         ) 

        [4] => Array 
         (
          [0] => 2602721 
          [1] => Product1 
          [2] => 15 
          [3] => 16 
          [4] => 2016/01/03 
         ) 

        [5] => Array 
         (
          [0] => 2616122 
          [1] => Product2 
          [2] => 25 
          [3] => 26 
          [4] => 2016/01/03 
         ) 

       ) 

     ) 

) 

助けていただければ幸いです。

+0

'$ main_prod_arr'のサンプルを投稿できますか? – Viral

+0

配列の構造を予想された出力と一緒に投稿する –

+0

関連する配列を追加しました –

答えて

0

解決策が見つかりました。 改善の提案があればコメントしてください:)

$dataonlyarray = array(); 
$dataonlyarraylooped = array(); 
$dataonlyarrayall = array(); 
    for ($z = 0; $z < sizeof($sec_headers_dates_arr)/2; $z++) { 

     for ($i = 0; $i < sizeof($main_prod_arr); $i++) { 
      $dataonlyarraylooped[] = array_slice($main_prod_arr[$i],0,$startingdatecolumn); 
      } 

     for ($i = 0; $i < sizeof($main_prod_arr); $i++) { 
      array_push($dataonlyarraylooped[$i],$main_prod_arr[$i][$startingdatecolumn+($z*2)]);  
      array_push($dataonlyarraylooped[$i],$main_prod_arr[$i][$startingdatecolumn+($z*2+1)]); 
      array_push($dataonlyarraylooped[$i],substr($headers_arr[$startingdatecolumn+($z*2+1)],0,10));   
      } 

      array_push($dataonlyarrayall,$dataonlyarraylooped); 
      unset($dataonlyarraylooped); 
    } 
echo '<pre>'; print_r($dataonlyarrayall); 
echo '</pre>'; 
関連する問題