IT TIP

문제 : 치명적 오류 : [] 연산자가 문자열에 지원되지 않음

itqueen 2020. 12. 10. 21:35
반응형

문제 : 치명적 오류 : [] 연산자가 문자열에 지원되지 않음


데이터베이스에서 정보를 가져 와서 배열에 저장하고 루프 구조가있는 형태로 에코하며 수정 된 정보를 데이터베이스에 저장하려고 할 때 문제가 있습니다.

이 오류가 발생합니다.

치명적인 오류 : [] 연산자가 문자열에 지원되지 않습니다 ....

암호:

    $namesql1 = "SELECT name,date,text,date2 FROM table WHERE something= '$something'";
    $nameresult1 = mysql_query($namesql1);
    $countrows = mysql_num_rows($nameresult1);
    while ($row = mysql_fetch_array($nameresult1, MYSQL_ASSOC)) {
        $name[] = $row['name'];
        $date[] = $row['date'];
        $text[] = $row['text'];
        $date2[] = $row['date2 '];
    }

/** SOME CODE HERE **/

    $wrotesql = "UPDATE service_report SET  name ='$name' , $date = '$date',$text = '$text[$nro]', ser_date = '$date2[$nro]' WHERE something = '$something')";

    $wroteresult = mysql_query($wrotesql);

누군가 내가 뭘 잘못하고 있는지 힌트를 줄 수 있습니까?

감사합니다.


문자열에서 짧은 배열 푸시 구문을 사용하려고하면이 오류가 발생합니다.

예를 들어,

$foo = 'foo';
$foo[] = 'bar'; // ERROR!

나는 짐작 것 하나 또는이 더 많은 $name, $date, $text또는 $date2변수가 문자열로 초기화되었습니다.

편집 : 질문을 다시 살펴보면 실제로 배열로 사용하고 싶지 않은 것 같습니다.

그렇다면 할당을 다음으로 변경하십시오.

$name = $row['name'];
$date = $row['date'];
$text = $row['text'];
$date2 = $row['date2'];

빈 인덱스 배열 푸시 구문을 사용하는 PHP 7 및 코드에 몇 가지 문제가있는 것 같습니다 .

명확하게 말하면 PHP 7 이상에서 잘 작동합니다 .

$previouslyUndeclaredVariableName[] = 'value'; // creates an array and adds one entry

$emptyArray = []; // creates an array
$emptyArray[] = 'value'; // pushes in an entry

작동 하지 않는 것은 문자열, 숫자, 객체 등으로 선언 된 변수에 빈 인덱스 푸시 를 사용하려고 시도하는 것입니다.

$declaredAsString = '';
$declaredAsString[] = 'value';

$declaredAsNumber = 1;
$declaredAsNumber[] = 'value';

$declaredAsObject = new stdclass();
$declaredAsObject[] = 'value';

모두 치명적인 오류가 발생합니다.


다음 $name과 같이 $date, $text또는 $date2문자열을 정의했을 것입니다 .

$name = 'String';

그런 다음 배열처럼 취급하면 치명적인 오류가 발생합니다.

$name[] = 'new value'; // fatal error

문제를 해결하려면 루프 시작 부분에 다음 코드를 추가하십시오.

$name = array();
$date = array();
$text = array();
$date2 = array();

이렇게하면 해당 값이 배열로 재설정되고 배열로 사용할 수 있습니다.


Such behavior is described in Migrating from PHP 7.0.x to PHP 7.1.x/

The empty index operator is not supported for strings anymore Applying the empty index operator to a string (e.g. $str[] = $x) throws a fatal error instead of converting silently to array.

In my case it was a mere initialization. I fixed it by replacing $foo='' with $foo=[].

$foo='';
$foo[]='test';
print_r($foo);

참고URL : https://stackoverflow.com/questions/5879675/problem-with-fatal-error-operator-not-supported-for-strings-in

반응형