2014-01-31 53 views
2

我試圖修改多維數組的每個數組元素中的第一個子元素的內容,但是,如果我通過引用傳遞所述元素,我會得到一個錯誤「&」沒有預料到。我是否需要拋棄foreach($ arr as list())語法並將其恢復爲循環標準並使用計數器變量訪問?如何在foreach迭代中修改多維數組的子元素

foreach ($transactions as list(&$student, &$tyID)) { 

    $query = "SELECT $column 
       FROM student 
       WHERE stUserID=$student"; 

    if ($stmt = mysqli_prepare($link, $query)) { 
     mysqli_stmt_execute($stmt); 

     mysqli_stmt_bind_result($stmt, $userHID); 

     while (mysqli_stmt_fetch($stmt)) { 
      $student = $userHID; 
      $tyID = $transType[$tyID]; 
     } 

     mysqli_stmt_close($stmt); 
    } 
} 

編輯:更新的代碼,我其實需要修改交易陣列中的每個數組的前兩個子元素。

+0

你在交易數組中只有學生ID是什麼? 。你通過修改子元素是什麼意思? – Ninad

+0

交易包含一系列交易數據(用戶ID,交易類型,借方,貸方等),其第一個元素是學生標識符。我正在修改這個元素的基礎是誰在查看頁面,如果是教師,它將是學生號碼,如果是查看頁面的學生將顯示別名。我試圖在輸出表格之前執行所有重新格式化。 @Ninad – jschavey

+0

然後,在獲取事務表本身時,您執行檢查並相應地獲取數組 – Ninad

回答

1

爲什麼你不能這樣做?假設鍵與列表變量相同

foreach ($transactions as &$transaction) { 

    $query = "SELECT {$column} 
       FROM student 
       WHERE stUserID={$transaction['student']}"; 

    if ($stmt = mysqli_prepare($link, $query)) { 
     mysqli_stmt_execute($stmt); 

     mysqli_stmt_bind_result($stmt, $userHID); 

     while (mysqli_stmt_fetch($stmt)) { 
      $transaction['student'] = $userHID; 
      $transaction['tyID'] = $transType[$transaction['tyID']]; 
     } 

     mysqli_stmt_close($stmt); 
    } 
} 
+0

這基本上工作。我使用list(),因爲它給了我變量來使用,而不是醜陋的事務[#],我最終不得不使用。但除此之外,這比我本來需要的for循環更好。謝謝。如果我有足夠的代表,我會投票! – jschavey

+0

很高興這有幫助,現在你可以我想:) –

+0

仍然2短!別擔心,@代碼,我會盡快得到它。 – jschavey