使用Foreach循环将数组值分配给多个数组

时间:2017-02-08 00:38:15

标签: php arrays foreach

我目前正在使用表格格式进行测验:

Private Sub btnRoom_Click(sender As Object, e As EventArgs) Handles btnRoom.Click

    Dim q = From asset In assets
          Let parts = asset.Split(","c)
          Let itemNumber = parts(0)
          Let itemDesc = parts(1)
          Let productCode = parts(2)
          Let purchaseDate = parts(3)
          Let purchasePrice = CDec(parts(4))
          Let currentValue = CDec(parts(5))
          Let life = parts(6)
          Let latestDate = parts(7)
          Let depreciation = depreciation(purchasePrice, currentValue)
          Let room = FindRoom(itemNumber.Substring(0, 3))
          Distinct


    lstDisplay.Items.Clear()
    lstDisplay.Items.Add("Assets Listed By Room")
    lstDisplay.Items.Add(" ")
    For Each thing In q

        lstDisplay.Items.Add("Item Number : " & thing.itemNumber &
                             " --- Item Description: " & thing.itemDesc)
    Next
End Sub

Function FindRoom(find As String) As String

    If find = "LVR" Then
        lstDisplay.Items.Add("Living Room")
    ElseIf find = "KIT" Then
        lstDisplay.Items.Add("Kitchen")
    ElseIf find = "REC" Then
        lstDisplay.Items.Add("Recreational Room")
    ElseIf find = "MBR" Then
        lstDisplay.Items.Add("Master Bedroom")
    ElseIf find = "SBR" Then
        lstDisplay.Items.Add("Second Bedroom")
    Else
        lstDisplay.Items.Add("Bathroom")
    End If
    Return find
End Function

我正在尝试验证用户的答案,而且我不太确定如何解决这个问题。我有点难过使用foreach循环将数组值分配给其他数组。 matresult.php中的以下代码不正确,但它应该显示我想要实现的目标:

在matquiz.php中我有

| id |     question     | option1 | option2 | option3 | answer |
--------------------------------------------------------
| 1  | What is my name? |  Dave   |   Bob   | Charles | Linda  |

在matresult.php中我有

//MySql query to select all data from matquiz table
$query="SELECT * FROM MatQuiz";                        
//Assign the query to a result variable
$result = mysql_query($query, $connect);

while($row = mysql_fetch_assoc($result)){
CODE
}

我想要实现的是将每个$ finalresults数组值推送到6个单独的数组中,并为5个问题/行执行此操作。

因此,例如,我希望array3保存所有5个问题ID。 [1,2,3,4,5]我希望array4能够容纳所有5个问题等。

我知道foreach循环中的语法是错误的,但这是我的问题,我将如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

首先,您应该使用mysqli_query和mysqli_fetch_array,因为现在这些更常见。有关原因,请参阅here

我也认为你根本不需要foreach,只需在while循环中使用mysqli_fetch_array,不需要另外的循环。

对于array_push()调用,你可以这样编写:

$array3[] = $row['ID'];

它们具有相同的效果,我认为这种情况更为常见。请参阅PHP手册中的here。如果未在数组赋值中放置特定索引,则PHP只会分配给下一个可用的数字索引。

我不确定您使用$ finalresults的是什么,但据我所知,它不需要它,因为您只是将它用作您要分配给您的数据的临时保留区域无论如何,array3-array8。我从我的例子中删除了它。

此示例包含同一文件中的所有内容,如果需要,请将其拆分:

<?php

$array3 = array();
$array4 = array();
$array5 = array();
$array6 = array();
$array7 = array();
$array8 = array();

$query = "SELECT * FROM MatQuiz";                        
$result = mysqli_query($connect, $query);

while ($row = mysqli_fetch_array($result)) {

  $array3[] = $row['ID'];
  $array4[] = $row['question'];
  $array5[] = $row['option1'];
  $array6[] = $row['option2'];
  $array7[] = $row['option3'];
  $array8[] = $row['answer'];

}