簡體   English   中英

使用switch語句PHP循環SQL查詢結果

[英]Loop SQL query results with a switch statement PHP

我有一個查詢,它從數據庫中選擇所有內容。 然后,我使用foreach語句遍歷結果。 我在數據庫中有一列稱為CODE。

該列包含數字,例如21、55、51、11。 有時每一行中都有多個代碼。

我想遍歷結果並將該行的費用代碼放入其自己的數組中。 數組必須包含一定數量的索引。

例如。 如果該行包含CODE 21和11。則該結果的數組為

Array(
      [0]=>21
      [1]=>0
      [2]=>0
      [3]=>11
)

因此,該行包含代碼21,該代碼被放入零索引的數組中。 然后,它查找不存在的代碼55,因此將第一個索引置於0。 查找代碼51,該代碼也不存在,因此在第二個索引中放入0。 然后,它在其中查找代碼11,因此將11放入第三索引。

我怎樣才能做到這一點? 我嘗試使用switch語句,但如果該行中有多個代碼,它將插入很多零。

SQL查詢

$sql_query2 = $DFS->prepare( "

select
       *
from
       TABLE

where

       REFERENCE= '".$ref."'

" );

$sql_query2->execute();

$result2 = $sql_query2->fetchall();

我目前在做什么

foreach( $result2 as $row2 ) {


     switch( $row2[ 'CODE' ] ) {

         case "21":
             $some_new_array[] = $row2[ 'AMOUNT' ];
             $some_new_array[] = "0";
             $some_new_array[] = "0";
             $some_new_array[] = "0";
            break;

         case "55":

             $some_new_array[] = $row2[ 'AMOUNT' ];
             $some_new_array[] = "0";
             $some_new_array[] = "0";
             $some_new_array[] = "0";
            break;

         case "51":
             $some_new_array[] = $row2[ 'AMOUNT' ];
             $some_new_array[] = "0";
             $some_new_array[] = "0";
             $some_new_array[] = "0";
            break;

         case "11":
             $some_new_array[] = $row2[ 'AMOUNT' ];
             $some_new_array[] = "0";
             $some_new_array[] = "0";
             $some_new_array[] = "0";
            break;
      }

}

如果該行中只有一個代碼,則上面的代碼將起作用。 例如。 如果有代碼21,它將輸入金額和3個零。 但是如果有代碼21和代碼55,則會輸入兩個6的零值。

如果參考具有兩個代碼,例如21和4,則每個代碼將有兩行。

該參考有兩個代碼,因此打印了兩行

我非常感謝您的幫助和指點。 謝謝。

如果您知道存在哪些代碼,則可以設置一個數組並進行比較,否則可以進行查詢以獲取它們

$codes = array(21,55,51,11);
foreach( $result2 as $row2 ) {
    $res = explode(" ",$row2['CODE']);
    foreach($codes as $cc){
        if(in_array($cc, $res))
        {
              $some_new_array[] = $row2[ 'AMOUNT' ];
        }else{
              $some_new_array[] = "0";
        }
    }
}

您可以“分解”您的數據(我假設您的數據用“”分隔):

foreach( $result2 as $row2 ) {

     $temp=explode(" ",$row2[ 'CODE' ])

     foreach( $temp as $temp2 ) {

         switch( $temp2 ) {

             case "21":
                 $some_new_array[] = $row2[ 'AMOUNT' ];
                 $some_new_array[] = "0";
                 $some_new_array[] = "0";
                 $some_new_array[] = "0";
                break;

             case "55":

                 $some_new_array[] = $row2[ 'AMOUNT' ];
                 $some_new_array[] = "0";
                 $some_new_array[] = "0";
                 $some_new_array[] = "0";
                 break;

             case "51":
                 $some_new_array[] = $row2[ 'AMOUNT' ];
                 $some_new_array[] = "0";
                 $some_new_array[] = "0";
                 $some_new_array[] = "0";
                break;

             case "11":
                 $some_new_array[] = $row2[ 'AMOUNT' ];
                 $some_new_array[] = "0";
                 $some_new_array[] = "0";
                 $some_new_array[] = "0";
                break;
          }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM