현재 처리 중인 오브젝트를 편집하는 것이 가능한지 궁금합니다.foreach
고리
여러 가지 물건으로 작업하고 있습니다.$questions
이 질문 오브젝트와 관련된 답변을 db에서 찾습니다.따라서 각 질문에 대해 응답 개체를 가져와 현재 상태를 업데이트하십시오.$question
내 안에foreach
다른 곳에서 출력/처리할 수 있도록 루프합니다.
foreach($questions as $question){
$question['answers'] = $answers_model->get_answers_by_question_id($question['question_id']); }
질문에 대한 답변
두 가지 방법이 있습니다.
foreach($questions as $key => $question){
$questions[$key]['answers'] = $answers_model->get_answers_by_question_id($question['question_id']); }
이 방법으로 키를 저장하면 메인에서 키를 다시 업데이트할 수 있습니다.$questions
변수
또는
foreach($questions as &$question){
추가&
유지하다$questions
갱신되었습니다.단, 이것이 짧지만 첫 번째 것을 추천합니다(Paystey 코멘트 참조).
루프 내의 어레이 요소를 직접 변경하려면 $value 앞에 &을 붙입니다.이 경우 값은 참조에 의해 할당됩니다.
꼭 사용하다array_map
컨테이너를 사용하여ArrayAccess
더 똑똑하고 의미 있는 방법이라고 생각하십니까?
어레이 맵의 의미론은 지금까지 본 대부분의 언어와 구현에서 비슷합니다.이 루프는 입력 어레이 요소를 기반으로 수정된 어레이를 반환하도록 설계되어 있습니다(개요 수준 무시 언어 컴파일/런타임 타입 프리퍼런스).루프는 더 많은 로직을 실행하는 것을 의미합니다.
ID/PK를 사용하여 개체를 검색하려면 SQL 사용 여부에 따라 필터를 사용하여 유효한 PK 배열을 얻은 후 쉼표로 삽입하여 SQL에 배치합니다.IN()
결과 세트를 반환합니다.SQL 경유로 여러 개의 콜이 아닌1개의 콜을 발신하기 때문에, 어느 정도의 콜을 최적화할 수 있습니다.call->wait
사이클. 가장 중요한 것은 내 코드가 어느 정도의 능력을 가진 언어를 가진 사람에게 잘 읽혀질 것이고 우리는 불변성 문제에 부딪히지 않을 것이다.
<?php
$arr = [0,1,2,3,4]; $arr2 = array_map(function($value) { return is_int($value) ? $value*2 : $value; }, $arr); var_dump($arr); var_dump($arr2);
대
<?php
$arr = [0,1,2,3,4]; foreach($arr as $i => $item) {
$arr[$i] = is_int($item) ? $item * 2 : $item; } var_dump($arr);
작업 내용을 알고 있으면 변경 가능성의 문제가 발생하지 않습니다(덮어쓰기를 의도하는 경우 유의).$arr
넌 항상 할 수 있어$arr = array_map
그리고 분명하게 말하라.