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 に、文字列を含むと予想される (仮想の) variable の内容を調べ、$substrその文字列と同じ名前の関数を呼び出すように指示します (PHP は、この変数 functionsを呼び出します)。

もちろん$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 に答える