2013-03-01 47 views
2

有没有更好/更短的方式来做到这一点?添加到数组,如果设置

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

“所有的变量都从MySQL拉” 这是什么意思?也就是说,这些变量如何具体设置? – erisco 2013-03-01 21:23:17

+0

不是,它看起来像你需要检查你正在做的每个变量。除非这些变量最初是在一个数组中或什么的... – 2013-03-01 21:23:48

+2

你能告诉我们完整的代码(例如从数据库和循环中拉出的部分)吗? – 2013-03-01 21:23:58

回答

5

我已经做了这样的事情在过去,但我不会推荐:

$variables = array("Price1", "Price2", "Price3", "Price4", "SPrice1", "SPrice2", "SPrice3"); 

$AllPrices = array(); 

foreach ($variables as $variable) 
{ 
    if (isset($$variable)) 
     $AllPrices[] = $$variable; 
} 

有关$$语法在PHP中如何工作的更多信息,请参阅here

但我同意你的帖子的评论...你真的应该再看看你如何获得这些数据。这个解决方案并不是最理想的。

+0

我认为这是一个整洁的解决方案,你从问题中得到的信息:-) – 2013-03-01 21:28:39

+0

不适用于我正在做的事(见我最近的评论),但很好的解决方案。 – EricImprint 2013-03-01 22:56:37

0

你也可以这样做:

for($i = 1; $i < 4; $i++){ 
    $current = ${'AllPrices'.$i}; 
    isset($current) && array_push($AllPrices, $current); 
} 

由于还张贴在上面的回答,使用变量名的排列更加高效。

0

不推荐使用此结构。

而不是使用$price1, $price2, ...使用数组的 - $price[1], $price[2], ...(做$ SPrice相同)。

那么你可以使用一个简单的array_merge

$AllPrices = array_merge($price, $SPrice); 
相关问题