2016-07-09 5 views
0

にループ出力ながら...PHP私は、データベースからデータを取得するために、次のループを持つ変数

$query = "SELECT id, metal, colour, value FROM data WHERE asset='gold' OR asset='silver' ORDER BY id DESC LIMIT 2"; 
$result = mysqli_query($connect, $query); 
while ($row = mysqli_fetch_assoc($result)){ 
    echo $row['metal'] . " is " . $row["colour"] . "<br />"; 
    echo $row['metal'] . " is worth " . $row["value"] . "<br />"; 
} 

silver is grey 
silver is worth 50 
gold is yellow 
gold is worth 100 

echo $row['metal'] . " is " . 

と...

echo $row['metal'] . " is worth " . 

...テストのためだけにあり、私の問題の説明に役立ちます。私はそうのような変数に出力を入れに行くかどう:

$silverColour = grey 
$silverValue = 50 
$goldColour = yellow 
$goldValue = 100 

多くのおかげ

+0

= $ row ['color'];あれは正しいですか? – mrpotocnik

+0

私はこの種のデータ移動のためにオブジェクトを使用することをお勧めします... – matiaslauriti

+0

mrpotocnik、yes correct :) –

答えて

0

あなたのコードをこのように変更します。

$values = []; 
$result = mysqli_query($connect, $query); 
while ($row = mysqli_fetch_assoc($result)){ 
    echo $row['metal'] . " is " . $row["colour"] . "<br />"; 
    echo $row['metal'] . " is worth " . $row["value"] . "<br />"; 
    $values[$row['metal']] = $row; 
} 

次にあなたが$values配列の値にアクセスすることができます:私はあなたの質問を理解していればあなたは$ silverColourような何かを探している

echo '$silverColour = '. $values['silver']['colour']; 
echo '$silverValue = '. $values['silver']['value']; 
echo '$goldColour = '. $values['gold']['colour']; 
echo '$goldValue = '. $values['gold']['value']; 
+0

回答したすべての方に感謝します。私はこれを答えとして選びました。私が試した最初の試行であり、完璧に機能しました。再度、感謝します。 –

3

あなたは{}を使用することができ、これを試してみてください。

${$row['metal'].'Color'} = $row["colour"]; 
    ${$row['metal'].'Value'}= $row["value"]; 

もう一つの簡単な方法は、キーと値を使用することです配列の。キーを

として
$array[row['metal'].'Color']= $row["colour"]; 
$array[row['metal'].'Value']= $row["value"]; 

のように繰り返し、値を印刷またはアクセスします。

+0

この回答は完璧な質問に答えていますが、私の正直な意見では、変数変数*コード内のバグを意味する望ましくない変数名。 @ Xorifelseが合意した。 – Xorifelse

+0

アプローチを変更する必要がある、私は彼に質問ごとに答えた。 –

1
$query = "SELECT id, metal, colour, value FROM data WHERE asset='gold' OR asset='silver' ORDER BY id DESC LIMIT 2"; 
$result = mysqli_query($connect, $query); 
while ($row = mysqli_fetch_assoc($result)){ 
${$row['metal'].'color'} = $row['metal']; 
${$row['metal'].'value'} = $row['value']; 
} 
0

私ははあなたにそれを行うためのハック方法を示すことができたが、私は配列を使用して、あなたに異なるアプローチを表示したいと思います。この後

$query = "SELECT id, metal, colour, value FROM data WHERE asset='gold' OR asset='silver' ORDER BY id DESC LIMIT 2"; 
$result = mysqli_query($connect, $query); 
$metals = array(); 
while ($row = mysqli_fetch_assoc($result)){ 
    $metals[$row['metal']] = array('color' => $row['color'], 'value' => $row['value']); 
} 

、あなたは素敵なを持っています全ての金属のアレイ(var_dump($metals);)。

$metals['gold']['color']; 
$metals['gold']['value']; 

あなたが本当にあなたのアプローチを使用して主張する場合、

$query = "SELECT id, metal, colour, value FROM data WHERE asset='gold' OR asset='silver' ORDER BY id DESC LIMIT 2"; 
$result = mysqli_query($connect, $query); 
while ($row = mysqli_fetch_assoc($result)){ 
    ${$row['metal'] . 'Color' } = $row['color']; 
    ${$row['metal'] . 'Value' } = $row['value']; 
} 

が動作する必要があります。このようにそれへのアクセス

0
$color= array(); 
$values= array(); 
while (($row = mysqli_fetch_assoc($result)) { 
    $color[] = (string) $row["colour"]; 
    $color[] = (string) $row["value"]; 
} 

// If you don't want an array, but a string instead, use implode: 

$color= implode(' ', $color) 
$values= implode(' ', $values) 
関連する問題