php类中的数组“Undefined variable”

时间:2016-02-11 19:26:26

标签: php arrays class

我开始学习PHP。我写了一个类,然后在其中定义了一个数组。

<?php

/**
 *
 */
class page {

    public $content= "Coming soon";
    public $title="Saeb Mollayi";
    public $style ="<link rel=\"stylesheet\" type=\"text/css\" href=\"./style/style.css\">";
    public $b = array(
        "خانه"       => 'homepage.php',
        "ارتباط"     => 'contact.php',
        "خدمات"      => 'services.php',
        "نقشه سایت"  =>'sitemap.php',
    );


    function displaymenu()
    {
        echo "<table>"."\r\n";
        echo  " <tr>";
        $width=(100/count($b));

        while (list($name,$url)= each ($b))
        {
            $this -> displaybuttons ($width,$name,$url, $this -> urlbool($url));
        }
        echo "</tr>";
        echo "</table>";
    }

    function ncontent($newcontent)
    {
        $this-> content = $newcontent ;
    }

    function ntitle($newtitle)
    {
        $this -> title = $newtitle ;
    }

    function nbuttons($newbuttons)
    {
        $this -> b = $newbuttons ;
    }

    function display()
    {
        echo "<head>";
        echo "\r\n";

        $this -> displaytitle();
        $this -> style ;

        echo "</head>"."\r\n"."<body>"."\r\n";

        $this -> displayheader();
        $this -> displaymenu($this -> b);

        echo $this -> content ;

        $this -> displayfooter() ;
        echo "</body>"."\r\n";
    }

    function displaytitle()
    {
        echo "<title>";
        echo $this -> title ;
        echo "</title>";
    }

    function displayheader()
    {
        echo '
        <table  id="header">
            <tr id="header">
                <td id="lheader"><img src="./img/logo1.png"></td>
                <td id="cheader"> Welocme. Welcome! </td>
                <rd id="rheader"><img src="./img/logo1.png"></td>
            </tr>
        </table>
        ';
    }

    function urlbool($url)
    {
        if (strpos($_SERVER['SCRIPT_NAME'],$url)==false)
            return false;
        else return true;
    }

    function displaybuttons($width,$name,$url,$active=false)
    {
        if (!active) {
            echo "<td \" style =\"width=$width% ;\">
                <a href ='$url'>
                <img src=\".\img\top.png \" alt='$name' border='0'></a>
                <a href='$url' ><span class='menu'>$name</span></a>
                </td>";
        } else {
            echo "
                <td style='width=$width%'>
                    <img src='./img/right.png'>
                    <span class='menu'>$name</span>
                </td>";
        }
    }

    function displayfooter()
    {
        echo "&copy footer";
    }
}
?>

这是我的index.php文件:

<html>
<?php
    require "./class/page0.inc";
    $cc = array(
        'خانه'      => 'homepage.php',
        'ارتباط'    => 'contact.php',
        'خدمات'     => 'services.php',
        'نقشه سایت' =>'sitemap.php',
    );

    $ppage = new page();
    $ppage-> nbuttons(array(
        'خانه' => 'homepage.php',
        'ارتباط'=> 'contact.php',
        'خدمات' => 'services.php',
        'نقشه سایت' =>'sitemap.php',
    ));
    $ppage -> ncontent('this is content'."<br>");
    $ppage -> display();
?>
</html>

但是当我运行它时,我看到了这些错误:

  

注意:未定义的变量:b in   第14行/opt/lampp/htdocs/all/test3/class/page0.inc

     

警告:除以零   第14行/opt/lampp/htdocs/all/test3/class/page0.inc

     

警告:传递给each()的变量不是数组或对象   第15行/opt/lampp/htdocs/all/test3/class/page0.inc

我做错了什么?我的错是什么?

2 个答案:

答案 0 :(得分:2)

人类可读错误的文字,意思是:

  1. Page.inc文件中第14行的函数中不存在变量$ b。
  2. 因为$ b不存在,PHP函数&#34; count&#34;将返回0并且您将除以零。
  3. 您将变量$ b传递给函数&#34;每个&#34;,$ b不存在且它不是数组或对象。
  4. 如果您在课程中有变量$ b,请使用$ this-&gt; b代替访问它。

答案 1 :(得分:1)

我不知道是不是因为在复制/粘贴中出现了问题,但编辑帖子时发现有很多语法错误。

首先,对象函数调用中的那些空格,其中有不必要的空格。

箭头不应包含$this -> displaymenu($this -> b);之类的空格,必须为$this->displaymenu($this->b);

此外,必须使用$b引用$this->b,这就是为什么会出现关于除以零的错误。