PHP 경고: 배열을 문자열로 변환할 수 없습니다.
P粉101708623
2023-08-15 22:27:37
<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>
함수
핵심은 다음 코드 줄입니다:implode
의 정의는 다음 코드와 거의 동일합니다(이것은 테스트되지 않은 예시일 뿐임). 으아악$pieceAsString = (string)$piece;
- 배열의 요소를 결합하려면각 요소를 하나씩 문자열로 변환해야 합니다.
으아악$pieceAsString = (string)$piece;
- 为了组合数组的元素,implode
이제 다음과 같이 생겼는지 생각해 보세요.루프의 어느 시점에서 우리는
$pieces
를 갖고 이를 문자열로 변환하려고 시도할 것입니다. 이런!그래서 경고가 나타나는 이유는
$piece = ['two-a', 'two-b']
당신의배열 안에 다른 배열이 있기 때문입니다. 이런 일이 발생할 수 있는 몇 가지 방법:
직접 작성 가능합니다. 예를 들어 누군가$_REQUEST
$_REQUEST['example'] = ['a', 'b'];
라고 쓸 수 있습니다.- PHP는 배열을 나타내기 위해 입력에서 특정 표기법을
합니다. 예를 들어 누군가가 - 가 자동으로
사용자 입력을 절대 신뢰하지 마십시오!
$_REQUEST
可以直接写入。例如,有人可以写入$_REQUEST['example'] = ['a', 'b'];
인식/your-page.php?example[]=a&example[]=b
URL을 방문하면['a', 'b']로 채워집니다. 코드>.
/your-page.php?example[]=a&example[]=b
,$_REQUEST
将自动填充为['a', 'b']
이것은 매우 중요한 알림을 제공합니다:입력은 사용자의 통제하에 있고 사용자는 친구가 아닐 수 있으므로 의 콘텐츠에 대해
$_REQUEST
어떤 가정을 하는 것은 매우 위험합니다.