[英]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.