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 に答える