2014-01-31 3 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

Still 2 short! 걱정 마세요, @ code-jaff, 최대한 빨리 할 수 ​​있습니다. – jschavey

관련 문제