2012-06-01 74 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,因此是错误的。