//下面这段是一个php文件中的,文件名myimputvalue.php(不要在意单词拼错)
<html>
<head>
<meta http-equiv="content-type" content="text/html";charset="utf-8"/>
</head>
<form action="print.php" method="post">
请输入层数:<input type="text" name="layer"/>
<input type="submit" value="打印"/>
</form>
</html>
   //这是在另一个文件中的,文件名abc.class.php一个文件中的,本来是想做出   *
                                                ***            这种效果的,哪知道最后变成了这种 *
                                                              *****                                                                         ***
                                                                                                                                             ****                                                                                                                 
<?php
class abc{
//接收一个数,并打印对应的金字塔
public function printstar($n){
//这里需要使用for
//  *
// ***
//*****
for($i=1;$i<=$n;$i++){
//先打印空格
for($k=1;$k<=$n-$i;$k++){
echo "&nbsp";
}
//打印*的个数
for($j=1;$j<=($i-1)*2+1;$j++){
echo "*";
}
    echo "<br/>";
}
}
}
//这是另一个文件print.php用来调用二个文件的<?php
//引入abc.class.php文件,
require_once 'abc.class.php';
//接收myinputvalue.php提交的数据并处理
    $layer=$_REQUEST['layer'];
//调用对象
//1.创建
$abc1=new abc();
$abc1->printstar($layer);
  
意思就是调用一个表单文件,然后调用abc那个处理文件,当在表单中输入数字,他就会相应的得出“金字塔的图像”
但是当我输入3的时候,结果是这样的
      *
   ***
*****Notice: Undefined index: layer in D:\WWW\print.php on line 7
金字塔是右对齐的,我在第七行找了半天就是不知道哪里出错了,金字塔为社么会右对齐呢?我是完全按照韩顺平那套视频教程来的!求大神详解

解决方案 »

  1.   

    程序没问题,只是 &nbsp; 等于 两个 * ,所以看起来是右对齐,把 * 换成一个中文试试class abc{
    //接收一个数,并打印对应的金字塔
    public function printstar($n){
    //这里需要使用for
    //  *
    // ***
    //*****
    for($i=1;$i<=$n;$i++){
    //先打印空格
    for($k=1;$k<=$n-$i;$k++){
    echo "&nbsp;";
    }
    //打印*的个数
    for($j=1;$j<=($i-1)*2+1;$j++){
    echo "呵";
    }
    echo "<br/>";
    }
    }
    }
    $layer=3;
    //调用对象
    //1.创建
    $abc1=new abc();
    $abc1->printstar($layer);
      

  2.   

    程序没问题
    是&nbsp; 的宽度比*大,所以不对齐。
    改为这样就可以了。
    把不显示的改为不显示就可以了<?php
    class abc{
    //接收一个数,并打印对应的金字塔
    public function printstar($n){
    //这里需要使用for
    //  *
    // ***
    //*****
    for($i=1;$i<=$n;$i++){
    //先打印空格
    for($k=1;$k<=$n-$i;$k++){
    echo "<font color='#FFFFFF'>*</font>";
    }
    //打印*的个数
    for($j=1;$j<=($i-1)*2+1;$j++){
    echo "*";
    }
        echo "<br/>";
    }
    }
    }$obj = new abc();
    $obj->printstar(10);
    ?>