이 글은 주로 PHP 소스 코드 1:explode 및 implode 함수에 대한 간략한 설명을 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.
#🎜🎜 # 1. 분해 및 파열 함수array 분해(문자열 구분자, 문자열 문자열 [, int 제한])
이 함수는 문자열로 구성된 배열을 반환합니다. 각 요소는 문자열의 하위 문자열로 표시됩니다. 문자 문자열 구분 기호는 경계점으로 구분됩니다. 제한 매개변수가 설정된 경우 반환된 배열에는 최대 제한 요소가 포함되며 마지막 요소에는 문자열의 나머지 부분이 포함됩니다.
구현 과정은 기본적으로 문자열 문자열을 순회하여 구분 기호와 비교하는 것입니다. 동일하다면 해시 테이블을 작성하고 문자열 포인터를 새 위치(즉, 각 구분 기호의 오른쪽)로 이동합니다.
이 함수의 구현은 주로 php_memnstr 함수에 의존합니다. php.h 파일에서 해당 정의를 볼 수 있습니다.
#define php_memnstr zend_memnstr
실제 함수는 zend_memnstr입니다. 이는 Zend/zend_operators.h 파일에 있습니다. 217행에서 그 정의를 볼 수 있습니다. 구현은 주로 while 루프와 두 개의 C 언어 함수 memchr 및 memcmp
This 이 함수는 글루 문자열로 연결된 조각 배열의 요소를 포함하는 문자열을 반환합니다.
이 함수는 배열을 매개변수로, 배열과 문자열을 매개변수로 사용할 수 있으며, 문자열과 배열의 순서는 프로그램의 각 상황에 따라 변경될 수 있습니다. # 🎜🎜#
if (argc == 1) { if (Z_TYPE_PP(arg1) != IS_ARRAY) { // 只有一个参数并且还不是数组 php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument must be an array"); return; } MAKE_STD_ZVAL(delim);#define _IMPL_EMPTY "" ZVAL_STRINGL(delim, _IMPL_EMPTY, sizeof(_IMPL_EMPTY) - 1, 0); SEPARATE_ZVAL(arg1); arr = *arg1; } else { // 两个参数 if (Z_TYPE_PP(arg1) == IS_ARRAY) { // 如果每一个参数是数组 arr = *arg1; convert_to_string_ex(arg2); delim = *arg2; } else if (Z_TYPE_PP(arg2) == IS_ARRAY) { // 如果第二个参数是数组 arr = *arg2; convert_to_string_ex(arg1); delim = *arg1; } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid arguments passed"); return; } }
PHP에서 strtr 함수의 이상한 동작에 대한 설명
# 🎜🎜#PHP 소스코드의 HashTable 분석에 대하여
위 내용은 PHP 소스 코드 1에 대한 간략한 논의: 분해 및 내포 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!