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;}   
4

3 回答 3

5

我过去做过这样的事情,但我不推荐它:

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

$AllPrices = array();

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

有关语法在 PHP 中如何工作的更多信息,请参见此处。$$

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

于 2013-03-01T21:26:05.193 回答
0

你也可以这样做:

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

正如上面的答案中所发布的,使用变量名数组更有效。

于 2013-03-01T21:37:53.357 回答
0

不推荐这种结构。

而不是$price1, $price2, ... 使用数组- $price[1], $price[2], ...(对 $SPrice 执行相同操作)。

然后你可以使用一个简单的array_merge

$AllPrices = array_merge($price, $SPrice);
于 2013-03-01T21:40:46.423 回答