2012-06-01 2 views
0

와 에코 :

<?php $offset = 0; ?> 
<?php $Counter = 0; ?> 
<?php $IsRD = 1; ?> 
<?php $temp = 0; ?> 
<?php $TmpString = $_helper->productAttribute($_product, nl2br($_product->getprojector_compatibility()) , 'projector_compatibility');?> 

<?php echo "<table border=\"0\" align=\"center\">"; ?> 
<?php echo "<tr><th><h1>Compatibility:</h1></th></tr>"; ?> 

<?php if(strpos( $TmpString, ";") == 0){ 
    $Counter++; 
    $IsRD++; 
    echo "<tr><td>The #$Counter is at position - 0 </td>"; 
} ?> 

<?php 
while($offset = strpos($TmpString, ";", $offset + 1)){  

    if ($IsRD == 3) { 
     $Counter++; 
     $IsRD++;  
     echo "<td>" , $substr($TmpString,$temp,$offset-$temp) , "</td></tr><tr>"; 
     $IsRD=1; 
     $temp=$offset; 
    } 
    else { 
     $IsRD++; 
     $Counter++; 
**line 171** echo "<td>", $substr($TmpString,$temp,$offset-$temp),"</td>"; 
     $temp=$offset; 
    } 
} ?> 
<?php echo "</tr></table>"; ?> 

을 내가 그것을 실행할 때이 오류가 얻을 :

Fatal error: Function name must be a string in /home/...../view.phtml on line 171

내가 잘못하고/놓치고 무엇을?

답변

1

라인이

substr($TmpString,$temp,$offset-$temp) 

하지

$substr($TmpString,$temp,$offset-$temp) 

해야합니다 당신은 이것처럼, 또한 에코 라인에서 잘못된 코드를 가지고 :

echo "<td>" , $substr($TmpString,$temp,$offset-$temp) , "</td></tr><tr>"; 

은 (점 쉼표를 교체 문자열 연결 연산자) 그리고 달러 기호 ($)로 위에 쓴 것

echo "<td>" . substr($TmpString,$temp,$offset-$temp) . "</td></tr><tr>"; 

그리고 더 나은 읽을 수있는 코딩 스타일 :

echo "<td>". substr($TmpString,$temp,$offset-$temp) ."</td></tr><tr>"; 
5

substr에서 "$"을 제거하십시오.

echo "<td>", substr($TmpString,$temp,$offset-$temp),"</td>"; 

PHP 아무것도 설정하지 않은 변수 "$의 SUBSTR"의 값을 조회 및 그와 같은 기능의 이름을 사용하려고. $ substr이 설정되지 않았기 때문에 빈 문자열 ""을 함수 이름으로 사용하고 잘못된 함수 이름에 대한 (도움이되지 않는) 오류 메시지를 생성했습니다.

2

substr이라는 이름 앞에 추가 $이 있으면 제거해야합니다.

현재 버전은 PHP가 문자열이 포함될 것으로 예상되는 (가상의) 변수 $substr의 내용을보고 이름이 해당 문자열과 동일한 함수를 호출합니다 (PHP는 variable functions이라고합니다).

물론 코드에는 변수 $substr이 없으므로 오류가 발생합니다.