【问题标题】:Initating an Array inside a Class在类中初始化数组
【发布时间】:2016-03-12 01:43:18
【问题描述】:

我一直在尝试让一个数组在一个类中初始化。我试图尝试的是使用数组和子类创建侧边菜单。我已经尝试解决这个问题好几天了,现在我正在寻求帮助。我有一种感觉,因为我正在学习 PHP,所以我缺少一些基本的东西。

以下是我的代码,注释掉的行是对未奏效的解决方案的尝试。

<?php
/*************   global  variables  ******************************/
 //global $house_array, $car_array, $vacation_array, $company_address;
$company_name = "Heaven HVAC";
$street = '12345 Blue Canyon Rd.'; 
$company_citystatezip = "Heaven, CA 91777";

/*************   end global  variables  **************************/

 echo '<H1 align="center">Calling Array inside Child Class</H1>';


 class Company{
 //// insert object variables (properties) HERE
 var $company_url = "http://localhost";
 var $company_email = "example@example.com ";

 //// insert methods here
  function getHeader($company_name, $color) {
    $topheader = "<TABLE align='center'; style='background-color:$color; width:50%'><TR><TD>";
    $topheader .= "<H1 style='text-align:center'>$company_name</H1>";
    $topheader .= "</TD></TR></TABLE>";
    return $topheader;                                      
 }

  function getFooter($color) {
  $this->address;
   $bottomfooter = "<TABLE align='center'; style='background-color:$color;width:50%'><TR><TD>";
  $bottomfooter .= "<center><b><u>$this->address</center></b></u>";
  $bottomfooter .= "</TD></TR></TABLE>";
   return $bottomfooter;
   }
 }  // end class Company

  //// Working On child class - If commented out, then the code has been tried and failed
 class AirCondition extends Company {
 var $navbar_array;

 //// create array
 function  create_navbar_array ( )  {
 $mainurl = $this->company_url;
 $this->navbar_array = array( "Home Page"=>"$mainurl?whichpage=home", "Sales"=>"$mainurl?whichpage=sales",
   "Support" => "$mainurl?whichpage=support", "Contacts" => "$mainurl?whichpage=contact" );
 }

 //create_navbar_array();
 // return $navbar_array;

  function getLeftNavBar($array){

  //    create_navbar_array();

  ## Create a table to display arrays
  print "<TABLE BORDER='1'>";
  echo '<tr><td>Navigation Menu</td></tr>'; 
        foreach($array as $Page){                       
            echo "<tr><td>{$Page}</td></tr>";
            return $array;
            }                   
  echo "</TABLE>";
  }
 }


 $HVACcompany = new AirCondition();
 $HVACcompany->address = "777 Estate Rd <br /> $company_citystatezip";
 echo $HVACcompany->getHeader($company_name, orange);
 echo "<br/>";
 echo $HVACcompany->getFooter(green);

 //echo $HVACcompany->getLeftNavBar();
 //echo $HVACcompnay->create_navbar_array();
 //$HVACcompnay->create_navbar_array();
 $HVACcompany->getLeftNavBar($navbar_array);

 ?>

我能够创建网页布局,但数组未初始化。我做错了什么/错过了什么?

【问题讨论】:

    标签: php arrays class subclass


    【解决方案1】:

    下面一行:

    $HVACcompany->getLeftNavBar($navbar_array);
    

    应该是:

    $HVACcompany->getLeftNavBar($HVACcompany->navbar_array);
    

    因为 $navbar_array 从未在全局命名空间中声明过,但是它被声明为在使用变量 $HVACcompany 初始化的 AirCondition 类中的公共变量。

    另外你需要调用函数$HVACcompany-&gt;create_navbar_array(); 在调用 $HVACcompany-&gt;getLeftNavBar($HVACcompany-&gt;navbar_array); 以创建数组 $navbar_array 之前。

    同时删除 foreach 循环中的 return $array; 语句。

    【讨论】:

    • 我尝试了更改,但仍然没有输出数组,只有表格。 foreach 循环有问题吗?
    • @JDean 你从未执行函数$HVACcompany-&gt;create_navbar_array(); 来创建数组$navbar_array。
    • 好的,我做到了,现在它只输出数组中的第一个元素,即“home”元素。为什么没有整个数组输出?
    • 在 foreach 循环中移除 return $array;。通过使用 return 语句,它会停止循环。
    • 就是这样...谢谢
    猜你喜欢
    • 2023-03-13
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2017-01-09
    • 1970-01-01
    相关资源
    最近更新 更多