이 기사에서는 Iterator 구현에서 값이 false인 경우 반복을 완료할 수 없는 이유에 대한 분석을 주로 소개합니다. 이는 특정 참조 값을 가지며 이제 필요한 모든 친구에게 공유됩니다. 🎜🎜#
PHP 소스 코드 24에 대한 간략한 토론: 반복자 구현에서 값이 false일 때 반복을 완료할 수 없는 이유 분석간단한 항목에 대한 기사가 있습니다. 반복자 구현 Yii 프레임워크에는 여기에 문제가 남아 있습니다. 반복 값에 false가 포함되면 이유는 무엇입니까?Brother Bird의 아이디어를 따르고 아래와 같이 Zend/zend_vm_execute.h 파일의 8131행에서 관련 단서를 찾으세요.
/* */ if (!iter || (iter->index > 0 && iter->funcs->valid(iter TSRMLS_CC) == FAILURE)) { /* reached end of iteration */ if (EG(exception)) { array->refcount--;zval_ptr_dtor(&array);ZEND_VM_NEXT_OPCODE();} ZEND_VM_JMP(EX(op_array)->opcodes+opline->op2.u.opline_num);}구현된 간단한 반복자의 경우 iter-> ;funcs-> ;valid(iter TSRMLS_CC) 메소드는 valid() 메소드를 호출하며 우리의 값이 false인 경우 current를 통해 반환된 값은 false입니다. 이때 foreach를 통해 액세스하면 순회가 중단됩니다. 여기에서 프로그램은 이 루프 대신 다음 코드를 계속 실행합니다. Solution
배열의 키와 값을 별도로 처리
valid() 에서 키를 작동 value 대신 rewind(), next() 메소드
현재의 값만 반환
예: 기사의 반복자의 간단한 구현 및 Yii 프레임워크의 Yii 프레임워크의 반복자 구현 구현 of CMapIterator
PHP 소스 코드 23에 대한 간단한 이야기: urlencode 함수 정보
PHP 소스 코드 22에 대한 간략한 토론: array_splice 함수에 대하여
위 내용은 PHP 소스 코드 24에 대한 간략한 토론: 반복자 구현에서 값이 false일 때 반복을 완료할 수 없는 이유 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!