>백엔드 개발 >PHP 문제 >PHP 코드를 실행할 때 배열을 문자열로 변환하라는 메시지가 표시되면 어떻게 해야 합니까?

PHP 코드를 실행할 때 배열을 문자열로 변환하라는 메시지가 표시되면 어떻게 해야 합니까?

王林
王林앞으로
2021-03-08 17:12:138062검색

PHP 코드를 실행할 때 배열을 문자열로 변환하라는 메시지가 표시되면 어떻게 해야 합니까?

머리말:

배열을 문자열로 변환하는 오류는 PHP 스크립트를 작성할 때 배열을 문자열로 사용하기 때문에 발생합니다.

그럼 어떤 상황에서 이런 오류가 발생하나요?

시나리오 1:

이런 종류의 시나리오는 비교적 드물며 대부분이 초보자에 의해 만들어지며 실수를 쉽게 찾아 해결할 수 있습니다. 문자 그대로 배열을 문자열로 사용하는 것을 의미합니다.
예:

$arr = array(0, 1, 2);

//错误1,双引号可以解析变量,但是双引号中,就会认为它是字符串。
var_dump("$arr");
//错误2
echo $arr;

이 경우 결과가 반환됩니다.

PHP Notice: Array to string conversion in /path/test.php on line 5
Array

해결책은 배열을 문자열로 변환한 다음 사용하는 것입니다. 예를 들어 json_encode($arr);

(동영상 공유 학습 : php 비디오 튜토리얼)

Scene 2:

이런 종류의 시나리오도 상대적으로 드물며, 배열을 문자열로 변환하라는 프롬프트만 보는 것만으로는 무엇이 잘못되었는지 이해하기 어렵습니다.

curl을 사용하고 post를 통해 매개변수를 전달할 때 매개변수가 2차원 배열인 경우 이 오류가 보고되는데 정말 놀랍습니다.

예:

$data = array([0], [1], [3]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

//报错行
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$result = curl_exec($ch);

이 문제에 대한 해결책도 매우 간단합니다

http_build_query()를 사용하여 매개변수를 처리하면 됩니다. 컬을 사용할 때는 모든 매개변수를 http_build_query로 처리하는 것이 좋습니다.

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

관련 추천: php 입문 튜토리얼

위 내용은 PHP 코드를 실행할 때 배열을 문자열로 변환하라는 메시지가 표시되면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제