2017-10-12 13 views
0

私の配列をより良くする必要があります。 データベースからデータを取得しています。マイルストーンとマイルストーンパートがあります。私は二次元配列が欲しい。 の最初のディメンションとマイルストーンのパート(第2のディメンション)のマイルストーンのデータが必要です。このコードではPHP - 配列が2次元配列にならない

$query = " 
     SELECT 
     a.id AS `milestone_id`, 
     a.titel AS `milestone_titel`, 
     a.client AS `client`, 
     a.verkocht_id AS `milestone_verkocht_id`, 

     b.id AS `milestonefase_id`, 
     b.titel AS `milestonefase_titel`, 
     b.milestone_id AS `milestonefase_milestone_id`, 
     b.omschrijving AS `milestonefase_omschrijving` 
     FROM `milestones` a 
     INNER JOIN `milestone_parts` b ON a.id=b.milestone_id 
     WHERE a.verkocht_id = '99' 
     "; 

     $result= $db->query($dbh, $query); 


      while ($row = $db->fetchassoc($result)) 
      { 
       $stone = array($row['milestone_verkocht_id'], $row['milestone_id'], $row['milestone_titel'], $row['client']); 
       $fase = array($row['milestonefase_milestone_id'],$row['milestonefase_id'],$row['milestonefase_titel']); 
       $stone[] = $fase; 
       echo '<pre>'; print_r($stone); echo '</pre>'; 
      } 

私は結果

Array 
(
    [0] => 99 
    [1] => 6 
    [2] => string 
    [3] => string 
    [4] => Array 
     (
      [0] => 6 
      [1] => 10 
      [2] => string 
     ) 

) 

Array 
(
    [0] => 99 
    [1] => 6 
    [2] => string 
    [3] => string 
    [4] => Array 
     (
      [0] => 6 
      [1] => 11 
      [2] => string 
     ) 

) 

としてこれを取得するが、私はこの(名前で)必要があります。

Array 
(
    [milestone_verkocht_id] => 99 // This is project id 
    [milestone_id] => 6 
    [milestone_title] => string 
    [client] => string 
    [10] => Array 
     (
      [milestonefase_milestone_id] => 6 
      [milestonefase_id] => 10 
      [milestone_title] => string 
     ) 
    [11] => Array 
     (
      [milestonefase_milestone_id] => 6 
      [milestonefase_id] => 11 
      [milestone_title] => string 
     ) 
    [12] => Array 
     (
      [milestonefase_milestone_id] => 6 
      [milestonefase_id] => 12 
      [milestone_title] => string 
     ) 

) 

あなたは私を助けたり、あなたを行うことができます解決策はありますか?お願い助けて!

+1

このIDに従って、プロジェクトのID、現在のアレイのグループ項目を取得fases。 –

+0

より具体的にお願いしますか? – Haffoo

答えて

0

することができますサイクルクエリによって返される各フィールド、新しいアレイ

$stones = array(); 
while ($row = $db->fetchassoc($result)) { 
    $fase = array(); 
    $stone = array('milestones' => array()); 
    foreach ($row as $k => $v) { 
     if (strpos($k, 'milestonefase_') === 0) { 
      $fase[$k] = $v; 
     } else { 
      $stone[$k] = $v; 
     } 
    } 
    if(!isset($stones[$stone['milestone_id']])) { 
     $stones[$stone['milestone_id']] = $stone; 
    } 
    $stones[$stone['milestone_id']]['milestones'][$fase['milestonefase_id']] = $fase; 
} 
echo '<pre>'.print_r($stones, true).'</pre>'; 

編集 が要求を一致させるためにいくつかの変更を行ったが、フィールド名をチェックして作ります。ここでは$ stoneを使用して、マイルストーンに既にある情報を保存し、クエリから返された別の "$ fase"を追加します。 もっとクリーンな方法は、2つの異なるクエリですべての情報を取得し、 fases

EDIT2 ための他の追加されたマイルストーンのためのサブアレイは

+0

Sir、これは動作しません: '$ fase = [];' '$ stone = [];' – Haffoo

+0

古いPHPバージョンを実行している場合、 "[]"を "array" () " –

+0

' $ fase = []; 'を' $ fase = array(); 'に変更しましたが、結果は変更されませんでした。 – Haffoo