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>";  ?>

当我运行它时,我得到了这个错误:

致命错误:函数名称必须是第 171 行 /home/...../view.phtml 中的字符串

我错过了什么/做错了什么?

4

3 回答 3

5

从 substr 中删除“$”。

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

PHP 试图查找未设置为任何值的变量“$substr”的值并将其用作函数名。由于没有设置 $substr,它使用值空字符串 "" 作为函数名,并产生关于非法函数名的(无用的)错误消息。

于 2012-06-01T15:21:03.410 回答
2

$您在该行中的名称之前有一个额外的substr需要删除。

当前版本指示 PHP 查看(假设的)变量的内容,该变量$substr预计包含一个字符串,并调用名称等于该字符串的函数(PHP 调用此变量函数)。

当然$substr,您的代码中没有变量,因此会出现错误。

于 2012-06-01T15:21:44.407 回答
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>";
于 2012-06-01T15:23:16.610 回答