0

forループを使用して、MySQLクエリで増分値を選択しようとしています。以下にサンプルコードを含めました。

<?php

$day_1="sep_28";
$day_2="sep_29";
$day_3="sep_30";

$query = mysql_query("SELECT * FROM table WHERE id = '$id'");

while ($row = mysql_fetch_assoc($query))
{
for ($i = 1; $i <= 3; $i++) 
    {
        $dayVar = "day_".$i;
        //$dayVarCount = $dayVar."_count"; // Don't really need this anymore, so removed.
        $dayVarCount = $row[$$dayVar];
        echo "$$dayVar.': '.$dayVarCount<p>"; // Edited.
    }      
}
?>

近づいていると思いますが、コードを実行すると、ページに次のように表示されます。

$day_1。':' .0

$day_2。':' .2

$day_3。':' .5

追加の推奨事項はありますか?大きな助けをありがとう!

4

4 に答える 4

1

変数変数を試してください:

for ($i = 1; $i <= 3; $i++) 
{
    $dayVar = "day_".$i;
    $dayVarCount = $dayVar."_count";
    $$dayVarCount = $row[$$dayVar];
    echo $$dayVar.': '.$$dayVarCount.'<p>'; // Edited.
}

これは基本的に文字列を使用して、変数をその名前で参照します。

このように考えてください:

$variable = 'hello';

$string = 'variable';

echo $$string;
// Is the same thing as:
echo $variable;

// Because you can thing of $$string as ${$string} ---> $variable when {$string} is interpreted into 'variable'

http://php.net/manual/en/language.variables.variable.php

于 2012-10-01T06:40:04.187 に答える
1

この行を置き換えます:

echo "$$dayVar.': '.$dayVarCount<p>";

これとともに:

echo $$dayVar . ': ' . $dayVarCount . '<br>';
于 2012-10-01T07:05:07.310 に答える
0
<?php

$day_1="January 1";
$day_2="January 2";
$day_3="January 3";

$query = mysql_query("SELECT * FROM dates WHERE id = '$id'");

while ($row = mysql_fetch_assoc($query))
{
for ($i = 1; $i <= 3; $i++) 
    {
        $var = $."day_".$i;
        $day_$i_count=$row['$var'];
        echo "$day_$i: $day_$i_count<p>";
    }       
}
?>

このコードも試すことができます。

于 2012-10-01T06:52:30.080 に答える
0

それはすべて非常に複雑に思えますが、おそらく私は質問を十分に理解していません。これは機能しますか?

$day[1]="sep_28";
$day[2]="sep_29";
$day[3]="sep_30";

$query = mysql_query("SELECT * FROM table WHERE id = '$id'");

while ($row = mysql_fetch_assoc($query))
{
    foreach ($day as $day_str) 
    {
        echo $day_str . ':' . $row[$day_str] . '<p>';
    }      
}
于 2012-10-01T07:06:58.530 に答える