2012-06-01 111 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,因此是錯誤的。