3

各画像名をハイパーリンクとして設定しようとしています。しかし、問題は、3つのエラーが発生し、2つは未定義のエラーであり、もう1つは1つのパラメーターを予期していることです。

動作していない現在のコード:

    <table id="tableqanda" cellpadding="0" cellspacing="0">
    <thead>
    <tr>
        <th width="11%" class="image">Image</th>
    </tr>
    </thead>
    </table>
    <div id="tableqanda_onthefly_container">
    <table id="tableqanda_onthefly" cellpadding="0" cellspacing="0">
    <tbody>
        <?php
        
function imageName( $imgitem ) {
    return htmlspecialchars($imgitem); //432
}

        
          foreach ($arrQuestionId as $key=>$question) {
        echo '<tr class="tableqandarow">'.PHP_EOL;
        echo '<td width="11%" class="imagetd">';
        
        if (empty($arrImageFile[$key])) {
            echo '&nbsp;';
        } else {
    echo '<ul class="qandaul"><li><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">'; //line 456
    echo implode('</li>\n<li></a><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">', imageName($arrImageFile[$key]) ); //line 457
    echo '</li></ul></a>';
        }
        echo '</td>';
        echo '</tr>'.PHP_EOL;
        }
?>
    </tbody>
    </table>
    </div>

受け取ったエラー:

警告:htmlspecialchars()は、パラメーター1が文字列であり、配列が432行目の...で指定されていることを想定しています。

注意:未定義の変数:456行目の...のimgitem

注意:未定義の変数:457行目の...のimgitem


フォーマットされたコード:

<table id="tableqanda" cellpadding="0" cellspacing="0">
    <thead>
        <tr>
            <th width="11%" class="image">Image</th>
        </tr>
    </thead>
</table>
<div id="tableqanda_onthefly_container">
    <table id="tableqanda_onthefly" cellpadding="0" cellspacing="0">
        <tbody>
            <?php
                function imageName( $imgitem ) {
                    return htmlspecialchars($imgitem); //432
                }
                foreach ($arrQuestionId as $key=>$question) {
                    echo '<tr class="tableqandarow">'.PHP_EOL;
                    echo '<td width="11%" class="imagetd">';
                    if (empty($arrImageFile[$key])) {
                        echo '&nbsp;';
                    } else {
                        echo '<ul class="qandaul"><li><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">'; //line 456
                        echo implode('</li>\n<li></a><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">', imageName($arrImageFile[$key]) ); //line 457
                        echo '</li></ul></a>';
                    }
                    echo '</td>';
                    echo '</tr>'.PHP_EOL;
                }
            ?>
        </tbody>
    </table>
</div>

var_dump結果:

指定されたvar_dumpからの結果は以下のとおりです。

array(2) { 
  [72]=> array(2) { 
    [0]=> string(16) "Lighthouse_4.jpg" 
    [1]=> string(12) "Tulips_3.jpg" 
  } 
  [73]=> array(1) { 
    [0]=> string(16) "Hydrangeas_3.jpg" 
  } 
}
int(73)

アップデート:

Praveenのコードで、次のようなエラーが発生します。

Fatal error: Cannot redeclare imageName() (previously declared in ...:451) in ... on line 451

以下はコードです:

<table id="tableqanda" cellpadding="0" cellspacing="0">
    <thead>
        <tr>
            <th width="11%" class="image">Image</th>
        </tr>
    </thead>
</table>
<div id="tableqanda_onthefly_container">
    <table id="tableqanda_onthefly" cellpadding="0" cellspacing="0">
        <tbody>
  //line 451          <?php function imageName( $imgitem ) { return htmlspecialchars($imgitem);
            } foreach ($arrQuestionId as $key=>$question) { echo '
            <tr class="tableqandarow">'.PHP_EOL; echo '
                <td width="11%" class="imagetd">'; function imageName( $imgitem ) { return htmlspecialchars($imgitem);
                    function getImgLink ( $imgKey ) { return $imgKey[0]; if (empty($arrImageFile[$key]))
                    { echo '&nbsp;'; } else { echo '
                    <ul class="qandaul">
                        <li>
                            <a href="previewImage.php?imgId=[' . getImgLink($arrImageFile($key)) . ']"
                            target="_blank">'; echo implode('</li>\n
                        <li>
                            </a>
                            <a href="previewImage.php?imgId=[' . getImgLink($arrImageFile($key)) . ']"
                            target="_blank">', imageName($arrImageFile[$key]) ); echo '</li>
                    </ul>
                    </a>'; } echo '</td>'; } } echo '</tr>'.PHP_EOL; } ?></tbody>
    </table>
</div>
4

2 に答える 2

3

多くのエラーがあります!!!

  1. どこで定義しました$imgitemか?
  2. なぜimplode弦を鳴らしているのですか?
  3. なぜ関数を途中で閉じて、関数の外のコードで変数を使用しているのですか?
  4. どこで$arrImageFile定義されていますか?
  5. 最後に、あなたは何をしようとしていますか?

その他のエラー...

function imageName( $imgitem ) {
    return htmlspecialchars($imgitem); //432
}
///////////////////////////////////////////////////////////////////
// You are closing the function here, hence the $imgitem's scope //
///////////////////////////////////////////////////////////////////


          foreach ($arrQuestionId as $key=>$question) {
        echo '<tr class="tableqandarow">'.PHP_EOL;
        echo '<td width="11%" class="imagetd">';

        if (empty($arrImageFile[$key])) {
            echo '&nbsp;';
        } else {
    echo '<ul class="qandaul"><li><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">'; //line 456
////////////////////////////////////////////////////
// The $imgitem's variable is not accessible here //
////////////////////////////////////////////////////

    echo implode('</li>\n<li></a><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">', imageName($arrImageFile[$key]) ); //line 457
////////////////////////////////////////////////////////////////////////////
// Why are you trying to implode something like this? Not a right syntax! //
////////////////////////////////////////////////////////////////////////////
    echo '</li></ul></a>';
        }
        echo '</td>';
        echo '</tr>'.PHP_EOL;
        }

アップデート

<table id="tableqanda" cellpadding="0" cellspacing="0">
    <thead>
        <tr>
            <th width="11%" class="image">Image</th>
        </tr>
    </thead>
</table>
<div id="tableqanda_onthefly_container">
    <table id="tableqanda_onthefly" cellpadding="0" cellspacing="0">
        <tbody>
            <?php
                function imageName( $imgitem ) {
                    return htmlspecialchars($imgitem); //432
                }
----------------^
///////////////////////////////////////////////////////////////////
// You are closing the function here, hence the $imgitem's scope //
///////////////////////////////////////////////////////////////////

                foreach ($arrQuestionId as $key=>$question) {
                    echo '<tr class="tableqandarow">'.PHP_EOL;
                    echo '<td width="11%" class="imagetd">';
                    if (empty($arrImageFile[$key])) {
                        echo '&nbsp;';
                    } else {
                        echo '<ul class="qandaul"><li><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">'; //line 456
-------------------------------------------------------------------------------------------^
/////////////////////////////////////
// Where have you defined $imgitem //
/////////////////////////////////////

                        echo implode('</li>\n<li></a><a href="previewImage.php?imgId=[' . $imgitem . ']" target="_blank">', imageName($arrImageFile[$key]) ); //line 457
------------------------------------------------------------------------------------------^
/////////////////////////////////////
// Where have you defined $imgitem //
/////////////////////////////////////

                        echo '</li></ul></a>';
                    }
                    echo '</td>';
                    echo '</tr>'.PHP_EOL;
                }
            ?>
        </tbody>
    </table>
</div>

の出力に基づいてvar_dump、画像のリンクを取得するために別の関数を追加する必要があると思います。これは、常に0thインデックスに存在するためです。

function getImgLink ( $imgKey )
{
    return $imgKey[0];
}

そして今、それをこのように使用します:

<a href="previewImage.php?imgId=[' . getImgLink($arrImageFile($key)) . ']" target="_blank">
于 2013-01-25T02:58:09.357 に答える
0

を囲む角かっこを削除してみてください[' . $imgitem . ']。角かっこは有効なクエリ文字列文字ではありません

別のこと、なぜ使用するのimplodeですか?

于 2013-01-25T02:57:57.353 に答える