이 글은 PHP7튜토리얼 칼럼에서 php7의 "0xFFFFFFFF"와 0xFFFFFFFF의 문제점을 소개하기 위해 작성되었습니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
구체적인 질문:
$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11)); $t2 = 0x3FFFFFFF & (1 * ("0xd5b42e11")); var_dump($t1,$t2);
php7(포함되지 않음) 및 다음 플랫폼에서 위 코드의 값은 다음과 같습니다.
int(364129809) int(364129809)
그리고 php7의 값은 다음과 같습니다.
int(364129809) int(0)
php7 환경에서 0x를 어떻게 처리해야 합니까? . $str을 위의 값과 동일하게 만드는 것은 어떻습니까?
해결책:
PHP7부터 16진수를 포함하는 문자열은 더 이상 숫자로 간주되지 않습니다.
문자열에 16진수가 포함되어 있는지 확인해야 하는 경우 공식 권장 코드는
<?php $str = "0xffff"; $int = filter_var($str, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX); if (false === $int) { throw new Exception("Invalid integer!"); } var_dump($int); // int(65535) ?>
입니다. 위의 질문은 변경되어야 합니다.
$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11)); $t2 = 0x3FFFFFFF & (1 * (filter_var("0xd5b42e11", FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX))); var_dump($t1,$t2);
위 내용은 PHP7의 16진수 문자열 처리에 관해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!