Php 集合变量上的未定义变量错误

Php 集合变量上的未定义变量错误,php,Php,我是PHP的新手。这是画廊代码。虽然我让gallery正常工作,但有一个错误显示为“PHP注意:未定义变量:caption\u数组位于/home/th/public\u html/gallery.PHP的第13行”。我检查并看到caption\u array已设置,但无法找出此错误持续出现的原因。下面的代码是使用caption\u数组的地方。。。任何帮助或指导都将不胜感激 // display previous and next links if more than one photo els

我是PHP的新手。这是画廊代码。虽然我让gallery正常工作,但有一个错误显示为
“PHP注意:未定义变量:caption\u数组位于/home/th/public\u html/gallery.PHP的第13行”
。我检查并看到
caption\u array
已设置,但无法找出此错误持续出现的原因。下面的代码是使用caption\u数组的地方。。。任何帮助或指导都将不胜感激

// display previous and next links if more than one photo 
else if( $pcaption ) 
{
    mysql_query("UPDATE gallery_photos SET photo_caption =    
    REPLACE(photo_caption,'\\\','') ");
    $pcaption = str_replace("-", " ",$pcaption);
    $pcaption = str_replace("%27", "'",$pcaption);
    $pcaption = str_replace("\\", "",$pcaption);
    $result = mysql_query( "SELECT photo_caption, photo_description, photo_filename,photo_keywords FROM gallery_photos WHERE photo_caption='".addslashes($pcaption)."'" ); 
    list($photo_caption, $photo_description, $photo_filename, $photo_keywords) = mysql_fetch_array( $result ); 

    $nr = mysql_num_rows( $result ); 
    mysql_free_result( $result );     

    $p_caption = $photo_caption;
    $p_description = $photo_description;
    $p_keywords = $photo_keywords;

    //fill caption_array with sorted pids in current category 

    $result = mysql_query( "SELECT photo_caption FROM gallery_photos WHERE category_name='".addslashes($cname)."' " ); 

    $ct = mysql_num_rows( $result ); 

    while ($row = mysql_fetch_array($result)) {
        $row[0]= trim($row[0]);
        $row[0] = str_replace(" ","-",$row[0]);
        $row[0] = str_replace("'","%27",$row[0]);
        $caption_array[] = trim($row[0]); 
    }

    mysql_free_result( $result );

    if( empty($nr ) ) 
    { 
        $result_final = "\t<tr><td>***No Photo found*******</td></tr>\n"; 
    } 
    else 
    { 
        $category_name = $cname; 
        $cname = str_replace(" ", "-", $cname); 
        $result_final = "
            <div class=limagePage>
                <div class=llink>
                    <a href=/gallery.php>ALBUMS</a>
                    <span class=arrow>&gt;&gt</span>
                    <a href=/gallery.php?cname=$cname>$category_name</a>
                </div>
        ";

        // display previous and next links if more than one photo 

        if ($ct > 1) 
        { 
            $pcaption = trim($pcaption);
            $pcaption = str_replace(" ","-",$pcaption);
            $pcaption = str_replace("'","%27",$pcaption);
            $key = array_search($pcaption , $caption_array); 
            $prev = $key - 1; 
            if ($prev < 0) $prev = $ct - 1; 
            $next = $key + 1; 

            if ($next == $ct) $next = 0; 
            $total_count= count($caption_array);

            $result_final .= "<div class='prevnext'>"; 
            $result_final .= "<span class='prev'><a href=/gallery.php?cname=$cname&pcaption=".$caption_array[$next]."><img src=/photos/assets/left.png  border=0 ></a></span>"; 
            $result_final .= "<span class='next'><a href=/gallery.php?cname=$cname&pcaption=".$caption_array[$prev]."><img src=/photos/assets/right.png  border=0 ></a></span>"; 
            $result_final .= "</div>"; 
        }            
    }

   $cname = str_replace(" ", "-", $cname);

   $images_dir =str_replace(".","",$images_dir);

   $result_final .= "<div class=limage><table><tr><td><table class=image><tr>\n\t<td><a href=/gallery.php?cname=$cname&pcaption=".$caption_array[$next]."><img src='".$images_dir."/".$photo_filename."' border='0' alt='".$photo_keywords."' /></a>
        <div class=caption>".$photo_caption."</div> 
        <div class='excerpt'>".$photo_description."</div> 
        </td>                    
        </tr></table></td></tr></table><div class=underline></div></div>
        <!-- .limagePage --></div>  ";
}
//如果有多张照片,则显示上一个和下一个链接
否则如果($pcaption)
{
mysql\u查询(“更新图库\u照片集照片\u标题=
替换(照片标题“\\\”、“”);
$pcaption=str_replace(“-”,“,$pcaption”);
$pcaption=str_replace(“%27”、“'”、$pcaption);
$pcaption=str\u替换(“\\”、“”、$pcaption);
$result=mysql\u query(“从图片库中选择图片标题、图片描述、图片文件名、图片关键字,其中图片标题=”)。addslashes($pcaption)。”;
列表($photo_caption、$photo_description、$photo_filename、$photo_keywords)=mysql_fetch_数组($result);
$nr=mysql\u num\u行($result);
mysql_free_result($result);
$p_caption=$photo_caption;
$p_description=$photo_description;
$p_关键字=$photo_关键字;
//用当前类别中已排序的PID填充标题_数组
$result=mysql\u query(“从类别为“”的图库照片中选择照片标题”。.addslashes($cname)。”);
$ct=mysql\u num\u行($result);
while($row=mysql\u fetch\u数组($result)){
$row[0]=修剪($row[0]);
$row[0]=str_replace(“,”-“,$row[0]);
$row[0]=str_replace(“'”、“%27”、$row[0]);
$caption_array[]=trim($row[0]);
}
mysql_free_result($result);
如果(空($nr))
{ 
$result_final=“\t***未找到照片*********\n”;
} 
其他的
{ 
$category_name=$cname;
$cname=str_替换(“,”-“,$cname);
$result_final=”
&燃气轮机
";
//如果有多张照片,则显示上一个和下一个链接
如果($ct>1)
{ 
$pcaption=修剪($pcaption);
$pcaption=str_replace(“,”-“,$pcaption);
$pcaption=str_replace(“'”、“%27”、$pcaption);
$key=array\u search($pcaption,$caption\u array);
$prev=$key-1;
如果($prev<0)$prev=$ct-1;
$next=$key+1;
如果($next==$ct)$next=0;
$total_count=count($caption_数组);
$result_final.=“”;
$result_final.=“”;
$result_final.=“”;
$result_final.=“”;
}            
}
$cname=str_替换(“,”-“,$cname);
$images\u dir=str\u replace(“.”,“”,$images\u dir);
$result\u final.=“\n\t
“$photo_说明。”
“$photo_说明。”
";
}

使用前定义它以避免此警告

$caption_array = array();

在上面定义($row=mysql\u fetch\u array($result)){…

使用前定义它以避免此警告

$caption_array = array();
在($row=mysql\u fetch\u array($result)){…

添加时定义上述内容

$caption_array = array();
前while循环

while ($row = mysql_fetch_array($result)) { 

前while循环

while ($row = mysql_fetch_array($result)) { 

你的错误可能有几个原因。让我来告诉你

  • 检查两个变量名,使它们匹配,可能是您输入了错误
  • 检查您的
    include
    ,您可能会错过定义该变量的部分
  • 一定不要在某个时候取消设置它
  • 您是在函数中定义变量,还是试图从函数中访问变量?请确保使用
    global
    关键字。请参阅下面的代码

  • 这是双向的

    function func() {
        global $var; // The magic trick
        $var = 'test'; // Set variable
    }
    
    var_dump($var); // NULL, perhaps errors may occur
    func();
    var_dump($var); // "test";
    

    你的错误可能有几个原因。让我来告诉你

  • 检查两个变量名,使它们匹配,可能是您输入了错误
  • 检查您的
    include
    ,您可能会错过定义该变量的部分
  • 一定不要在某个时候取消设置它
  • 您是在函数中定义变量,还是试图从函数中访问变量?请确保使用
    global
    关键字。请参阅下面的代码

  • 这是双向的

    function func() {
        global $var; // The magic trick
        $var = 'test'; // Set variable
    }
    
    var_dump($var); // NULL, perhaps errors may occur
    func();
    var_dump($var); // "test";
    

    这是一个警告,不是一个错误声明$caption_数组,而在使用$caption_数组=array()之前循环定义它;这是一个警告,不是一个错误声明$caption_数组,而在使用$caption_数组=array()之前循环定义它;谢谢Farid…你的建议似乎减少了错误。我认为真正的原因是其他原因。因为错误有时会出现…谢谢Farid…你的建议似乎减少了错误。我认为真正的原因是其他原因。因为错误有时会出现。。。