2012-01-14 6 views
-1

3つの異なる配列を作成したいと思います。これは、いくつかのmysqlテーブルから取り出されるフィールドに応じて変更できます。ダブルドル記号 - 配列キーの割り当て=>値

これは私が持っているコードです:SUBCATS、猫とマンと値のペアを持つ各:私はこれを生成するために期待する何

// Gather db rows with query 
    $compQuery['subCats'] = mysql_query("SELECT id,name,category FROM subcategories ORDER BY id DESC"); 
    $compQuery['cats'] = mysql_query("SELECT id,name FROM categories ORDER BY id DESC"); 
    $compQuery['mans'] = mysql_query("SELECT id,name,link FROM manufacturers ORDER BY id DESC"); 

    // Place rows into arrays 
    foreach($compQuery as $name=>$query){ 

     $name = array(); 

     while($data = mysql_fetch_array($compQuery[$name])){ 
      foreach($data as $key=>$value){ 

       $$name[$key] = $value;     

      } 

     } 

    } 

は3つの配列です。 $$ name変数を見つけて配列に[$ key] = $ valueを代入するのではなく、$$ name変数から1文字を取り出し、この新しい変数に$値を代入します。例えば

、もし$名= 'SUBCATS'、$キー= '3'、および値= '工作機械'

それはSUBCATSにおける第三の手紙使用して変数$ C作成します。

$subCats[3] = 'machine tools'; 

が今、明らかにクエリごとに別々の配列を作成する簡単な方法があり、私はlazier /容易なバージョンに私のコードを変更した:それは何をすべき

$C = 'machine tools' 

作成です。しかし、二重ドル記号変数にキー値ペアを割り当てる方法についてはまだ興味があります。

ご協力いただければ幸いです!私は単純なコードを今働いていますが、この新しいコードをよりダイナミックにして、必要なだけ多くのクエリを手間をかけずに実行できるようにしたいと考えています。

ありがとうございます!

ジョシュこのラインで

答えて

1

${$name}[$key]

をしかし、私はその名前のコードにない変数のように、「不明」の変数を作成することが好きではありません'key'、 'db'、 '_ GET'、 'compQuery'など?すべての地獄が緩んで...

+0

これは私が探していたものです! 私はあなたが何を意味するかを見ます。これらのクエリ名はいずれも内部的に処理され、これらの変数名を持つ必要はありません。 助けてくれてありがとう! – VictorKilo

+0

「$$ name」の代わりに '$ result [$ name]'を使うことができない理由はありません。もっと安全です。 – Wrikken

+0

ええ、それははるかに良い選択肢のように思えます。これにより、すべてのクエリ結果をグループ化して参照しやすくなります。助けてくれてありがとう! – VictorKilo

1

:あなたは$nameを上書きしている

$name = array(); 

。あなたはおそらく$$nameに書き込むためのもの:名前がある場合はどうすれば...

$$name = array(); 
+0

これも問題を指摘してくれてありがとう! – VictorKilo

関連する問題