PHP 경고: 배열을 문자열로 변환할 수 없습니다.
P粉101708623
P粉101708623 2023-08-15 22:27:37
0
1
485
<p>내 파일에 다음 코드가 있습니다: </p> <pre class="brush:php;toolbar:false;">if (is_array($_REQUEST)) $cepl=implode(' ', $_REQUEST);</pre> <p>며칠마다 PHP 로그에 다음과 같은 경고가 표시됩니다. PHP 경고: /file.php, 76행에서 배열을 문자열</p>로 변환 중입니다. <p>76번째 줄은 다음과 같습니다: $cepl=implode(' ', $_REQUEST);</p> <p>이 경고의 원인을 알 수 없습니까? ! </p>
P粉101708623
P粉101708623

모든 응답(1)
P粉449281068

함수 implode의 정의는 다음 코드와 거의 동일합니다(이것은 테스트되지 않은 예시일 뿐임). 으아악

핵심은 다음 코드 줄입니다: $pieceAsString = (string)$piece; - 배열의 요소를 결합하려면

각 요소를 하나씩 문자열로 변환해야 합니다. $pieceAsString = (string)$piece; - 为了组合数组的元素,implode 이제 다음과 같이 생겼는지 생각해 보세요.

으아악

루프의 어느 시점에서 우리는 $pieces를 갖고 이를 문자열로 변환하려고 시도할 것입니다. 이런!

그래서 경고가 나타나는 이유는 $piece = ['two-a', 'two-b']당신의

배열 안에 다른 배열이 있기 때문입니다. 이런 일이 발생할 수 있는 몇 가지 방법: $_REQUEST

직접 작성 가능합니다. 예를 들어 누군가 $_REQUEST['example'] = ['a', 'b'];
    라고 쓸 수 있습니다.
  1. PHP는 배열을 나타내기 위해 입력에서 특정 표기법을 $_REQUEST可以直接写入。例如,有人可以写入$_REQUEST['example'] = ['a', 'b'];인식
  2. 합니다. 예를 들어 누군가가 /your-page.php?example[]=a&example[]=b URL을 방문하면
  3. 가 자동으로 ['a', 'b']로 채워집니다. 코드>. /your-page.php?example[]=a&example[]=b$_REQUEST将自动填充为['a', 'b']이것은 매우 중요한 알림을 제공합니다:
  4. 사용자 입력을 절대 신뢰하지 마십시오!

입력은 사용자의 통제하에 있고 사용자는 친구가 아닐 수 있으므로 의 콘텐츠에 대해 $_REQUEST어떤 가정을 하는 것은 매우 위험합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿