>source

이 경고와 관련하여 찾을 수있는 다른 모든 게시물을 살펴 보았지만 수정할 수없는 것 같습니다. 경고는 PHP Warning: in_array() expects parameter 2 to be array, string given in... .

코드:

$my_teachers = $student->my_teachers;
                
if (in_array($teacher_email, $my_teachers)) {

$my_teachers가 배열이되어야한다는 것을 이해합니다. 값은 배열을 만들고 교사의 이메일을 배열로 푸시 한 다음 MySQL에 저장하여 생성됩니다. MySQL 데이터베이스 행은 다음과 같이 표시됩니다.

a:2:{i:1;s:16:"teacheremail1@gmail.com";i:2;s:18:"teacheremail2@gmail.com";}

이것은 실제로 문자열로 저장하고 나는 그것을 깨닫지 못하고 있습니까? 어느 쪽이든 경고를 제거하려면 어떻게해야합니까? 코드는 여전히 의도 한 결과를 제공하지만 경고가 내 error_log를 채우고 있습니다.


  • 답변 # 1

    다음과 같이 추가 검사를 추가 할 수 있습니다.

    $my_teachers = gettype($student->my_teachers) === 'array' ? $student->my_teachers : unserialize($student->my_teachers);
    
    

  • 답변 # 2

    당신이 말한대로 코드가 잘 작동한다면 경고를 없애기 위해

    The code still gives me the intended results, but the warning is filling up my error_log.

    당신은 사용할 수 있습니다 @ PHP의 연산자.

    기본적으로 문서에 지정된 오류 제어 연산자입니다. https://www.php.net/manual/en/language.operators.errorcontrol.php

    다음은 예입니다.

    $ids = 23;
    $storedPosts = @count($ids);
    
    

    여기에 count(); 정수는 셀 수 없지만 함수는 오류를 반환합니다. @ 오류를 포착합니다.

  • 이전 python - pdSeries의 길이를 찾고 마지막 두 문자를 제거하십시오
  • 다음 java - Spring Webflux에서 런타임에 서버 포트를 어떻게 얻을 수 있습니까?