php에서 is_array ()는 변수가 배열인지 여부를 결정하는 가장 직접적인 내장 기능입니다. 그러나 "배열 요소의 구조가 기대를 충족하는지 여부"는 일반적으로 변수가 배열임을 판단하는 것뿐만 아니라, 배열의 키를 점검 해야하는지, 값의 키를 확인 해야하는지, 필요한 필드가 존재하는지 여부, 기본 구조에서 고급까지, 코드 예제와 라인에서 기본적으로 라인을 사용하는 방법에 대해 체계적으로 설명하고 공통적 인 방법을 확인합니다. 모범 사례.
IS_ARRAY ($ V) : $ v가 배열인지 여부를 결정합니다 ( TRUE 또는 FALSES를 반환).
isset ($ arr [ 'key']) 및 array_key_exists ( 'key', $ arr) : 키가 존재하는지 여부를 결정합니다. ISSET은 또한 값이 무효가 아니라고 결정합니다.
확인 함수 유형 : is_int () , is_string () , is_bool () , is_float () 등
조합 점검 : is_array ()는 일반적으로 주요 존재 및 유형 확인과 함께 사용하여 요소가 "예상 구조를 준수하는지 여부"를 결정합니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">isArraySimple</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$var</span></span></span><span>): </span><span><span class="hljs-title">bool</span></span><span> {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$var</span></span><span>);
}
</span><span><span class="hljs-variable">$a</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-variable">$b</span></span><span> = </span><span><span class="hljs-string">"not an array"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">isArraySimple</span></span><span>(</span><span><span class="hljs-variable">$a</span></span><span>)); </span><span><span class="hljs-comment">// true</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">isArraySimple</span></span><span>(</span><span><span class="hljs-variable">$b</span></span><span>)); </span><span><span class="hljs-comment">// false</span></span><span>
</span></span>참고 : 이것은 가장 기본적인 단계입니다. 더 복잡한 구조 검증은 is_array ()가 사실 이라는 전제에 따라 수행되어야합니다.
시나리오 : 다양한 사용자 정보를 받고 싶습니다. 구조는 다음과 같습니다.
<span><span>[
'id' => int,
'name' => string,
'email' => string,
'meta' => array (선택 과목,존재하면 배열이어야합니다)
]
</span></span>구현 예 :
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">validateUser</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">array</span></span></span><span> </span><span><span class="hljs-variable">$arr</span></span><span>): </span><span><span class="hljs-title">bool</span></span><span> {
</span><span><span class="hljs-comment">// 필요한 필드</span></span><span>
</span><span><span class="hljs-variable">$required</span></span><span> = [</span><span><span class="hljs-string">'id'</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span>, </span><span><span class="hljs-string">'email'</span></span><span>];
</span><span><span class="hljs-comment">// 첫째, 배열입니다</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>)) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
</span><span><span class="hljs-comment">// 检查필요한 필드存在</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$required</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>, </span><span><span class="hljs-variable">$arr</span></span><span>)) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
}
</span><span><span class="hljs-comment">// 체크를 입력하십시오</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>]) || !</span><span><span class="hljs-title function_ invoke__">is_string</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>]) || !</span><span><span class="hljs-title function_ invoke__">is_string</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'email'</span></span><span>])) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
</span><span><span class="hljs-comment">// 선택 과목字段 meta,있다면,배열이어야합니다</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-string">'meta'</span></span><span>, </span><span><span class="hljs-variable">$arr</span></span><span>) && !</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>[</span><span><span class="hljs-string">'meta'</span></span><span>])) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
}
</span><span><span class="hljs-comment">// 사용의 예</span></span><span>
</span><span><span class="hljs-variable">$ok</span></span><span> = [</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Alice'</span></span><span>, </span><span><span class="hljs-string">'email'</span></span><span> => </span><span><span class="hljs-string">'[email protected]'</span></span><span>, </span><span><span class="hljs-string">'meta'</span></span><span> => [</span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">25</span></span><span>]];
</span><span><span class="hljs-variable">$bad</span></span><span> = [</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-string">'1'</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Bob'</span></span><span>, </span><span><span class="hljs-string">'email'</span></span><span> => </span><span><span class="hljs-string">'[email protected]'</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">validateUser</span></span><span>(</span><span><span class="hljs-variable">$ok</span></span><span>)); </span><span><span class="hljs-comment">// true</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">validateUser</span></span><span>(</span><span><span class="hljs-variable">$bad</span></span><span>)); </span><span><span class="hljs-comment">// false (id 아니요 int)</span></span><span>
</span></span>시나리오 : 수신 된 배열은 사용자 객체 목록입니다 (배열의 각 요소는 위의 ValidateUser 규칙을 준수해야합니다).
샘플 코드 :
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">validateUserList</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$list</span></span></span><span>): </span><span><span class="hljs-title">bool</span></span><span> {
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$list</span></span><span>)) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$list</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$index</span></span><span> => </span><span><span class="hljs-variable">$item</span></span><span>) {
</span><span><span class="hljs-comment">// 각 요소는 배열이어야합니다,그리고 구조는 효과적입니다</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$item</span></span><span>) || !</span><span><span class="hljs-title function_ invoke__">validateUser</span></span><span>(</span><span><span class="hljs-variable">$item</span></span><span>)) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
}
</span></span>참고 : 여기서는 각 항목의 경우 먼저 is_array ()가 먼저, 특정 확인 함수가 호출됩니다. 외국 데이터 (예 : API 요청 기관)에 대한 방어 점검을 수행하는 것이 매우 중요합니다.
재귀 함수는 일반적으로 어레이에 깊이가 알려지지 않았거나 다층 네그 링을 가질 때 구조를 검증하는 데 사용됩니다. 예를 들어 : 트리와 같은 메뉴 또는 다단계 분류 구조.
재귀 예제 (각 노드는 ID 와 어린이를 포함해야합니다 (배열 또는 빈)) :
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">validateTreeNode</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$node</span></span></span><span>): </span><span><span class="hljs-title">bool</span></span><span> {
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$node</span></span><span>)) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
</span><span><span class="hljs-comment">// 포함해야합니다 id</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-string">'id'</span></span><span>, </span><span><span class="hljs-variable">$node</span></span><span>) || !</span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$node</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>])) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
</span><span><span class="hljs-comment">// children 선택 과목,但若存在배열이어야합니다,각 어린이 요소는 또한 법적 노드 여야합니다</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-string">'children'</span></span><span>, </span><span><span class="hljs-variable">$node</span></span><span>)) {
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$node</span></span><span>[</span><span><span class="hljs-string">'children'</span></span><span>])) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$node</span></span><span>[</span><span><span class="hljs-string">'children'</span></span><span>] </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$child</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">validateTreeNode</span></span><span>(</span><span><span class="hljs-variable">$child</span></span><span>)) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
}
</span></span>"원하는 구조"는 일반 어레이로 추상화되어 유효성 검사기를보다 일반적으로 재사용 할 수 있습니다.
규칙 형식 예제 (pseudo-rules) :
<span><span><span class="hljs-variable">$schema</span></span><span> = [
</span><span><span class="hljs-string">'id'</span></span><span> => </span><span><span class="hljs-string">'int'</span></span><span>,
</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'string'</span></span><span>,
</span><span><span class="hljs-string">'email'</span></span><span> => </span><span><span class="hljs-string">'string'</span></span><span>,
</span><span><span class="hljs-string">'meta'</span></span><span> => [</span><span><span class="hljs-string">'type'</span></span><span> => </span><span><span class="hljs-string">'array'</span></span><span>, </span><span><span class="hljs-string">'schema'</span></span><span> => [</span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-string">'int'</span></span><span>]]
];
</span></span>일반 검증 자 (간단한 구현) :
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">validateBySchema</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$data</span></span></span><span>, </span><span><span class="hljs-variable">$schema</span></span><span>): </span><span><span class="hljs-title">bool</span></span><span> {
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>) || !</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$schema</span></span><span>)) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$schema</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> => </span><span><span class="hljs-variable">$rule</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>, </span><span><span class="hljs-variable">$data</span></span><span>)) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>; </span><span><span class="hljs-comment">// 可扩展为선택 과목字段支持</span></span><span>
}
</span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-variable">$data</span></span><span>[</span><span><span class="hljs-variable">$key</span></span><span>];
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_string</span></span><span>(</span><span><span class="hljs-variable">$rule</span></span><span>)) {
</span><span><span class="hljs-comment">// 간단한 유형 일치</span></span><span>
</span><span><span class="hljs-variable">$typeCheck</span></span><span> = </span><span><span class="hljs-keyword">match</span></span><span> (</span><span><span class="hljs-variable">$rule</span></span><span>) {
</span><span><span class="hljs-string">'int'</span></span><span> => </span><span><span class="hljs-title function_ invoke__">is_int</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>),
</span><span><span class="hljs-string">'string'</span></span><span> => </span><span><span class="hljs-title function_ invoke__">is_string</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>),
</span><span><span class="hljs-string">'bool'</span></span><span> => </span><span><span class="hljs-title function_ invoke__">is_bool</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>),
</span><span><span class="hljs-string">'float'</span></span><span> => </span><span><span class="hljs-title function_ invoke__">is_float</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>),
</span><span><span class="hljs-string">'array'</span></span><span> => </span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>),
</span><span><span class="hljs-keyword">default</span></span><span> => </span><span><span class="hljs-literal">false</span></span><span>
};
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$typeCheck</span></span><span>) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$rule</span></span><span>) && </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$rule</span></span><span>[</span><span><span class="hljs-string">'type'</span></span><span>]) && </span><span><span class="hljs-variable">$rule</span></span><span>[</span><span><span class="hljs-string">'type'</span></span><span>] === </span><span><span class="hljs-string">'array'</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>)) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$rule</span></span><span>[</span><span><span class="hljs-string">'schema'</span></span><span>])) {
</span><span><span class="hljs-comment">// 배열에 동일한 내부를 사용하십시오 schema 확인을 수행하십시오(연관 배열이라고 가정하십시오)</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">validateBySchema</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-variable">$rule</span></span><span>[</span><span><span class="hljs-string">'schema'</span></span><span>])) </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>; </span><span><span class="hljs-comment">// 알 수없는 규칙</span></span><span>
}
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
}
</span></span>팁 : 성숙한 검증 라이브러리 (예 : 프레임 워크의 자체 유효성 검사기 또는 타사 라이브러리 사용과 같은)는 실제 프로젝트에서 자체 쓰기 구현 대신 사용해야하지만 원칙을 이해하면 디버그 및 사용자 정의에 도움이 될 수 있습니다.
ISSET 과 ARRAY_KEY_EXISTS 의 차별화 : 배열 키가 존재하지만 값이 NULL 이면 ISSET은 False를 반환하고 Array_Key_Exists는 true를 반환합니다. NULL 이 허용 값 인 경우 Array_Key_Exists를 사용하십시오.
외부 입력의 데이터 유형은 신뢰할 수 없습니다 . JSON 디코딩 ( JSON_DECODE )은 숫자를 int/float로 변환하지만 양식에서 제출 된 것은 문자열이며 유형 변환 또는 엄격한 점검을 사용해야합니다.
IS_ARRAY를 사용하여 완료하지 마십시오 : IS_ARRAY는 첫 번째 단계 일뿐입니다. 일반적으로 키 존재, 유형, 값 범위 등을 확인해야합니다.
빈 배열과 비 어리의 차이점 : [] 는 배열, null / '' / 0은 배열이 아닙니다. 빈 배열을 허용할지 논리적으로 명확하게 정의해야합니다.
성능 고려 사항 : 항목별로 재귀 적 검증이 많은 양의 데이터에 대한 재귀 검증에는 성능 오버 헤드가있을 수 있으며 필요한 경우 최대 깊이 또는 배치 검증 전략을 제한 할 수 있습니다.
API가 Post /Users /Batch를 받고 본문은 JSON 어레이이고 각 요소는 사용자 개체 여야한다고 가정합니다 (섹션 3 참조). 샘플 처리 흐름 :
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 1. 원본을 얻으십시오 body</span></span><span>
</span><span><span class="hljs-variable">$raw</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'php://input'</span></span><span>);
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">json_decode</span></span><span>(</span><span><span class="hljs-variable">$raw</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// 두 번째 매개 변수 true 연관 배열을 반환합니다</span></span><span>
</span><span><span class="hljs-comment">// 2. 기본 검사</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>)) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">400</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">json_encode</span></span><span>([</span><span><span class="hljs-string">'error'</span></span><span> => </span><span><span class="hljs-string">'요청 본문이 있어야합니다 JSON 정렬'</span></span><span>]);
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-comment">// 3. 각 항목을 확인하십시오</span></span><span>
</span><span><span class="hljs-variable">$valid</span></span><span> = </span><span><span class="hljs-title function_ invoke__">validateUserList</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$valid</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">422</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">json_encode</span></span><span>([</span><span><span class="hljs-string">'error'</span></span><span> => </span><span><span class="hljs-string">'정렬中存在不符合结构的元素'</span></span><span>]);
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-comment">// 4. 후속 처리(라이브러리를 쓰십시오、성공으로 돌아 가기 등)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">200</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">json_encode</span></span><span>([</span><span><span class="hljs-string">'status'</span></span><span> => </span><span><span class="hljs-string">'ok'</span></span><span>]);
</span></span>Filter_var () : 이메일, URL 등을 확인하십시오 (예 : Filter_Validate_Email ).
CTYPE_DIGIT () : 문자열에 숫자 만 포함하는지 여부를 결정합니다 (문자열 형성 번호가 필요한 경우).
PHP 8의 일치 , 유형 힌트 및 노조 유형은 기능 서명에 대한 추가 보증을 제공 할 수 있습니다.
단위 테스트 (PHPUNIT)를 사용하여 다양한 경계 시나리오를 다루는 유효성 검사기에 대한 테스트 케이스를 작성하십시오.
is_array () 는 중요하지만 배열 구조 확인의 첫 단계 일뿐입니다. 구조가 기대치를 충족하는지 여부를 결정하려면 키의 존재, 값 유형, 선택적 필드 규칙, 중첩 구조 검증 및 값 범위 검증 여부를 결정해야합니다.
검증 로직을 작은 기능 또는 스키마 기반 일반 유효성 검사기로 캡슐화하면 유지 관리 및 재사용 성을 향상시킬 수 있습니다.
항상 외부 입력을 방어하십시오 (혼동, 누락 된 필드, 추가 필드 또는 악의적 인 데이터 방지).
복잡한 시나리오에서는 성숙한 검증 라이브러리 또는 프레임 워크에서 제공하는 검증 기능의 사용이 우선 순위가 부여되며 확인 규칙의 정확성은 단위 테스트를 통해 보장됩니다.