有更好/更短的方法吗?
每个变量都是一个被调用的MySQL表值。我有一个主表和一个覆盖表,所以调用第一个表,提取结果数组,然后调用覆盖表并提取这些结果以覆盖第一个提取。
if (isset($Price1)){
$AllPrices[] = $Price1;}
if (isset($Price2)){
$AllPrices[] = $Price2;}
if (isset($Price3)){
$AllPrices[] = $Price3;}
if (isset($Price4)){
$AllPrices[] = $Price4;}
if (isset($SPrice1)){
$AllPrices[] = $SPrice1;}
if (isset($SPrice2)){
$AllPrices[] = $SPrice2;}
if (isset($SPrice3)){
$AllPrices[] = $SPrice3;}
答案 0 :(得分:5)
过去我做过这样的事情,但我不推荐它:
$variables = array("Price1", "Price2", "Price3", "Price4", "SPrice1", "SPrice2", "SPrice3");
$AllPrices = array();
foreach ($variables as $variable)
{
if (isset($$variable))
$AllPrices[] = $$variable;
}
有关$$
语法如何在PHP中运行的详细信息,请参阅here。
但我同意你对帖子的评论......你真的应该再看看你是如何得到这些数据的。这种解决方案至少不是理想的。
答案 1 :(得分:0)
你也可以这样做:
for($i = 1; $i < 4; $i++){
$current = ${'AllPrices'.$i};
isset($current) && array_push($AllPrices, $current);
}
正如上面的回答中所述,使用变量名数组更有效。
答案 2 :(得分:0)
不建议使用此结构。
而不是使用$price1, $price2, ...
使用数组 - $price[1], $price[2], ...
(对$ SPrice执行相同操作)。
然后您可以使用简单的array_merge
:
$AllPrices = array_merge($price, $SPrice);