PHP의 문법적 요구 사항이 엄격하지 않기 때문에 문자열을 배열로 사용할 수도 있으므로 문제가 있습니다. 문자열의 내용에 액세스하기 위해 숫자가 아닌 키를 키로 사용할 때 다음과 같이 일부 불일치가 발생할 수 있습니다.
1 $hello = "안녕하세요" ;
2 var_dump( $hello [ 'abc' ])
3 var_dump( $hello [ '0' ]);
4 var_dump( $hello [ '1abc' ]);
5 var_dump( $hello [ '12abc' ]);
결과:
'h'
'h'
'e'
''
출력 결과에 대해서는 이야기하지 않고 그냥 실행만 하면 됩니다. 그 이유는 intval 때문인 것으로 생각됩니다. 시간적 제약으로 인해 zend 코드를 확인하지는 못했지만, 다음 코드의 실행 결과 페이지에서는 몇 가지 문제점을 보여줍니다.
1 var_dump( intval ( ' abc ' ));
2 var_dump( intval ( '0' ));
3 var_dump( intval ( '1abc' )); ' 12abc' ));
이것은 코드 검토나 테스트 중에 매우 치명적인 버그입니다. 함수의 반환 값이 제대로 설계되지 않은 경우 때로는 배열을 반환하고 때로는 문자열을 반환합니다. 사용하기 전에 먼저 반환 결과가 배열인지 확인해야 합니다. 그렇지 않으면 이 버그가 보고됩니다.