如果设置,则添加到数组

时间:2013-03-01 21:21:28

标签: php arrays isset

有更好/更短的方法吗?

每个变量都是一个被调用的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;}   

3 个答案:

答案 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);