2016-11-28 4 views
0

내가액세스 PHP 7 개체 속성

$arrdata = array("CTypeID","TypeName","CTYPES","CID","COURSES","CTypeID"); 

이 배열 함수에받는 다음과 같은 배열 한 다음 Generic2DataSideBar($arrdata); 호출 된 함수의 정의가 될 때 :

function Generic2DataSideBar($data) 
{ 
    //a generic array for data.. 
    //var_dump($data); 
    $sdata= array(); 
    //this is the function for generating depended data... 
    $this->load->model("Commons"); 
    $dat="SELECT ".$data[0].",".$data[1]." FROM ".$data[2]; 
    $result=$this->Commons->LoadResultSet($dat); 
    //Looping through the resultset 
    foreach ($result as $key) { 
     //get the number of departments 

     $da="SELECT ".$data[3]." FROM ".$data[4]." WHERE ".$data[5]."='".$key->$data[0]."'"; 
     $dat=count($this->Commons->LoadResultSet($da)); 

     $r=array($key->$data[1], $dat); 
     array_push($sdata, $r); 
    } 
    header("content-type: application/json"); 
    $sdata=json_encode($sdata); 
    return $sdata; 
} 

이 기능은 PHP 5.6.3에서 잘 작동하지만 PHP 7로 업그레이드했을 때 $da="SELECT ".$data[3]." FROM ".$data[4]." WHERE ".$data[5]."='".$key->$data[0]."'"; 라인에서 문제가 발생했습니다 은 ''을 반환합니다. 그 부분을 제외한 모든 값은 정상입니다. PHP 7에서 $key->"Data"과 같은 것을 사용할 수 없으므로 "Data"가 유효한 속성 이름입니까? 감사합니다

+0

변수 처리에서 이전 버전과의 호환성을 확인하십시오. http://php.net/manual/en/migration70.incompatible.php#migration70.incompatible.variable-handling – jitendrapurohit

+0

감사합니다. 그러나 작동하지 않습니다. – NetizenKing

답변

1

documentation에서 볼 수 있듯이 $key->$data[0]의 해석이 PHP 5에서 PHP 7 (표의 두 번째 행)으로 변경되었습니다. 대신 그 변수 변수에

  1. 추출물 $data[0] 및 사용 :

    $field = $data[0]; 
    "... WHERE ".$data[5]."='".$key->$field."'"; 
    
  2. 사용 곱슬 당신이 중 하나를 수행 할 수 PHP 5에서와 동일한 결과를 얻기 위하여

    첫 번째로 평가해야하는 하위 표현식을 그룹화하는 중괄호를 사용하십시오.

    "... WHERE ".$data[5]."='".$key->{$data[0]}."'"; 
    

두 방법 모두 PHP 5와 호환되며 PHP 5의 코드 동작을 변경하지 않습니다.

+0

옵션 2를 사용하기로 선택했습니다. 매우 깨끗하고 메모리 할당은 없습니다. 그것은 매력처럼 일했습니다! 고맙습니다. – NetizenKing

+0

그리고 더 많은 문서에 감사드립니다. – NetizenKing