PHP 5.4에서 실행되는 일부 스크립트를 PHP 7.4에서 실행하려고 합니다. 수정된 오래된 참조별 전달 오류를 제외하고는 구문 오류가 감지되지 않았습니다.
어플리케이션의 일부에서 올바른 반환 값을 얻지 못하는 경우가 있습니다. 오류와 지원 중단 경고를 포착할 수 있는지 확인하기 위해 php7cc와 PHPStorm을 실행했지만 문제가 무엇인지에 대한 단서는 얻지 못했습니다.
XML 데이터를 구문 분석하여 클래스 개체에 넣는 스크립트가 있습니다. _MV_WRITE_._MV_SEP_._MV_SEP_.$this->mvKey._MV_SEP_.$this->mvObj->toString()._MV_SEP_This 부분은 $item->toString()이 올바른 문자열 대신 공백을 반환한다는 점을 제외하면 정확합니다. 값.
이 코드에는 PHP 5.4에서는 작동하지만 PHP 7.4에서는 작동하지 않는 내용이 있나요? 아래는 문제의 코드입니다.
메인 스크립트
XML 파서
으아악MV아이템
으아악다음은 PHP 5.4
의 올바른 반환 값입니다. 으아악PHP 7.4에서 얻은 결과는 다음과 같습니다.
으아악반환된 배열이 동일하므로 XML 파서는 문제가 없습니다. 실제 문제는 실제로 extract() 메소드만 포함하는 getFormattedItem() 메소드에 있습니다. 다양한 위치에 인쇄 문을 추가해 보았지만 어떤 문이 문제를 일으키는지 확인할 수 없는 것 같습니다.
只需查看您的最终输出。我猜可能是字符集的问题。通常,新安装的 PHP 版本的 default_charset 值是 UTF-8,但旧版本可能将该值设置为 ISO-8859-1(即 latin-1),因此请检查您的 php.ini(以及可能更改字符集的项目中的其他脚本)。