2016-10-10 4 views
0

からPHPの配列を入力します。私はこのような配列構築する必要があるデータベースの結果

$data = array(
      array(1 => array("<span class=\"spanBig\">A</span> ROW GREENS", array(
       "A1" => "http://flexslider.woothemes.com/images/kitchen_adventurer_caramel.jpg", 
       "A2" => "http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg", 
       "A3" => "http://flexslider.woothemes.com/images/kitchen_adventurer_lemon.jpg" 
      ))), 
      array(2 => array("<span class=\"spanBig\">B</span> ROW BLUE",array(
       "B1" => "http://flexslider.woothemes.com/images/kitchen_adventurer_donut.jpg", 
       "B2" => "http://flexslider.woothemes.com/images/kitchen_adventurer_caramel.jpg", 
       "B3" => "http://flexslider.woothemes.com/images/kitchen_adventurer_cheesecake_brownie.jpg" 
     )))); 

[OK]を、私は手動でこのinital配列している:

$data = array(
      array(3 => array("<span class=\"spanBig\">A</span> ROW GREENS", array())), 
      array(4 => array("<span class=\"spanBig\">B</span> ROW LIGHTS", array())), 
      array(5 => array("<span class=\"spanBig\">C</span> ROW GOLD/BROWN", array())), 
      array(6 => array("<span class=\"spanBig\">D</span> ROW GOLD/BROWN", array())), 
      array(7 => array("<span class=\"spanBig\">E</span> ROW DARK", array())), 
      array(2 => array("<span class=\"spanBig\">F</span> ROW DEALS", array())), 
      array(8 => array("<span class=\"spanBig\">M</span> ROW MARBLE", array())), 
      array(1 => array("<span class=\"spanBig\">OF</span> ROW LEATHER", array()))//array() is the marker 
     ); 

これは、より多くの要素を持っているが、これは重要ではありません今。同じ構造ですが、各要素の最終配列は空です。

私はこのように、配列に保存し、最終的には初期の空の配列に保存し、各カテゴリからの要素のリストを取得するforループを作成します。

foreach($data as $dat){ 
    foreach($dat as $key=>$da){ 
     $_id = $key; 

     $sql = "SELECT l.name, p.bigimage 
       FROM `LocationsCategory` lc, 
        `NEProducts` p, 
        `LocationsCategoryJoin` lcj, `Locations` l 
       WHERE lcj.LocationsID = p.location 
        and p.location is not null 
        and l.LocationsID = lcj.LocationsID 
        and p.status = 1 
        and lcj.LocationsCategoryID = " . $_id; 

     $result = mysql_query($sql) or die ("ERROR"); 
     $resultList = array(); 
     while ($row = mysql_fetch_assoc($result)) { 
      //I will adding each key value pair here 
      $resultList[$row["name"]] = $row["bigimage"]; 
     } 
     //I will save new constructed array in the marker** 
     $da[1] = $resultList; 
    } 
} 

私は(最初の配列が生じています目的の配列ではありません)なぜ、希望の位置に結果リストを保存できないのですか?私はそのda [1]のローカル配列を知っています。私は$データでいくつかの組み合わせを試していたが、私は配列を壊しただけだった。どんな助け?

+0

のいずれか、元の配列に割り当てる両方foreachループ内の参照を使用するためにこんにちは、フェッチしようとしているテーブルを見ることはできますか?すべての配列に対して常に3つの値ですか? –

+3

まだこの質問をしていませんか? http://stackoverflow.com/questions/39882185/3-level-array-in-php-to-organize-data –

+0

array(3 =>​​ array( "​​ array( " A ROW GREENS"))のように、 'そして、あなたのループで' $ da [$ _ id] [] = $ resultList; ' – KikiTheOne

答えて

1

$daは、割り当てたいアレイのローカルコピーであることが間違いありません。

foreach($data as &$dat){ 
    foreach($dat as $key => &$da){ 

または両方foreachループ内のキーを取得し、キー使用して、元の配列に割り当てる:

foreach($data as $i => $dat) { 
    foreach($dat as $key => $da) { 
     // ... 
     $data[$i][$key][1] = $resultList; 
関連する問題