>  Q&A  >  본문

PHP 경고: 배열을 문자열로 변환할 수 없습니다.

<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粉101708623P粉101708623402일 전381

모든 응답(1)나는 대답할 것이다

  • P粉449281068

    P粉4492810682023-08-16 17:52:28

    함수 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어떤 가정을 하는 것은 매우 위험합니다.

    회신하다
    0
  • 취소회신하다