【发布时间】:2017-08-14 09:06:10
【问题描述】:
我有一个从数据库中选择所有内容的查询。然后,我使用 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。每个代码将有两行。
感谢任何帮助和指点。谢谢。
【问题讨论】:
标签: php arrays foreach switch-statement