2013-03-01 45 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); 
相關問題