我正在尝试将每个图像名称设置为超链接。但问题是我收到3个错误,2个是未定义的错误,另一个是期望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 ' ';
} 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
注意:未定义的变量:imgitem in ... on line 457
<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 ' ';
} 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 ' '; } 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>
答案 0 :(得分:3)
$imgitem
?implode
一个字符串?$arrImageFile
定义在哪里?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 ' ';
} 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 ' ';
} 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
的输出,我觉得您需要添加另一个函数来获取图像的链接,因为它始终存在于0
索引中。
function getImgLink ( $imgKey )
{
return $imgKey[0];
}
现在,以这种方式使用它:
<a href="previewImage.php?imgId=[' . getImgLink($arrImageFile($key)) . ']" target="_blank">
答案 1 :(得分:0)
尝试删除包含[' . $imgitem . ']
的方括号。方括号不是有效的查询字符串char
另一件事,为什么要使用implode
?