PHP: возможно ли динамически изменить имя переменной? - PullRequest
1 голос
/ 07 декабря 2011

У меня есть код, который выбирает данные из моей базы данных, а затем устанавливает эти выбранные значения в переменную.

Однако мне нужно выполнить запрос много раз. Мне интересно, могу ли я использовать цикл while / for для выполнения запроса x раз и использовать функцию switch для соответствующего изменения имен переменных? Я не уверен, стоит ли это делать, не говоря уже о том, возможно ли, какие-нибудь мысли? Спасибо.

Ниже приведен код, который я пытаюсь достичь, который отлично работает.

////////////////////////////////////////////////////////////////////////////////////////////////////
$output1 = mysql_query("

SELECT `pOutputValue`,`cOutputValue` 
FROM `output` WHERE `teamID` = '$teamID' && `period` = '$currentStage' && `outputType`      = 'balance'

")or die($output1."<br/><br/>".mysql_error());

//assign the text located at the logo field (the path of the logo) to a variable     $slogan
while($row = mysql_fetch_assoc($output1)) 
{
$pBalance = $row['pOutputValue'];
$cBalance = $row['cOutputValue'];

}



////////////////////////////////////////////////////////////////////////////////////////////////
$output2 = mysql_query("

SELECT `pOutputValue`,`cOutputValue` 
FROM `output` WHERE `teamID` = '$teamID' && `period` = '$currentStage' && `outputType`     = 'marketShare'

")or die($output2."<br/><br/>".mysql_error());

//assign the text located at the logo field (the path of the logo) to a variable $slogan
while($row = mysql_fetch_assoc($output2)) 
{
$pMarketShare = $row['pOutputValue'];
$cMarketShare = $row['cOutputValue'];

}
//////////////////////////////////////////////////////////////////////////////////////////////////
$output3 = mysql_query("

SELECT `pOutputValue`,`cOutputValue` 
FROM `output` WHERE `teamID` = '$teamID' && `period` = '$currentStage' && `outputType` = 'salePrice'

")or die($output3."<br/><br/>".mysql_error());

//assign the text located at the logo field (the path of the logo) to a variable $slogan
while($row = mysql_fetch_assoc($output3)) 
{
$pSalePrice = $row['pOutputValue'];
$cSalePrice = $row['cOutputValue'];

}

?>

Но вместо этого я пытаюсь выполнить запрос через цикл с обновлением имен переменных.

<?php

$i = "0";

while($i<4)

{

switch ($i)

case "0";
$type = "balance";
break;

case "1";
$type = "marketShare";
break;

case "2";
$type = "salePrice";
break;

case "3";
$type = "unitPrice";
break;



$output = mysql_query("

SELECT `pOutputValue`,`cOutputValue` 
FROM `output` WHERE `teamID` = '$teamID' && `period` = '$currentStage' && `outputType` = '$type'

")or die($output."<br/><br/>".mysql_error());

//assign the text located at the logo field (the path of the logo) to a variable $slogan
while($row = mysql_fetch_assoc($output)) 
{
$c$type = $row['pOutputValue'];
$p$type = $row['cOutputValue'];


}

Проблема в том, как обновить имена переменных

  $pBalance = $row['pOutputValue'];
  $cBalance = $row['cOutputValue'];

Это вообще возможно? Или это даже стоит делать?

Ответы [ 2 ]

3 голосов
/ 07 декабря 2011

Почему бы просто не использовать массив для хранения значений? Тогда проблема становится тривиальной.

1 голос
/ 07 декабря 2011

Вы можете сделать это следующим образом

$name = 'c' . $type;
$$name = $row['cOutputValue'];
$name = 'p' . $type;
$$name = $row['pOutputValue'];

Но в целом это не очень удобно, для таких случаев массивы, вероятно, лучше.

...