Php 二维阵列上的Foreach不';不生产
我在PHP类中有一个函数,如下所示:Php 二维阵列上的Foreach不';不生产,php,class,multidimensional-array,foreach,Php,Class,Multidimensional Array,Foreach,我在PHP类中有一个函数,如下所示: //properties var $title; var $thePage; function gBuildTable($theArray){ //given a 2D array, builds an HTML table based on that array $table = "<table> \n"; foreach ($theArray as $row){
//properties
var $title;
var $thePage;
function gBuildTable($theArray){
//given a 2D array, builds an HTML table based on that array
$table = "<table> \n";
foreach ($theArray as $row){
$table .= "<tr> \n";
foreach ($row as $cell){
$table .= " <td>$cell</td> \n";
} // end foreach
$table .= "</tr> \n";
} // end foreach
$table .= "</table> \n";
return $table;
} // end gBuildTable
function buildTable($theArray){
$temp = $this->gBuildTable($theArray);
$this->addText($temp);
} // end buildTable
function addText($content){
//given any text (including HTML markup)
//adds the text to the page
$this->thePage .= $content;
$this->thePage .= "\n";
} // end addText
function gAddText($content){
//given any text (including HTML markup)
//returns the text
$temp= $content;
$temp .= "\n";
return $temp;
} // end addText
我是在做一些愚蠢的疏忽还是什么我没有看到的事情?这不会产生任何结果,它实际上是空的。没有错误,没有警告,没有通知,娜达
仅供参考:$name
等变量之前都已初始化和设置,它们不为空。对于我做错了什么,我们将不胜感激。短暂性脑缺血发作
另外,我在foreach
循环中使用了current()
来回显它当时看到的内容,并且它看到了数据,所以我不知道为什么它实际上什么都不做
更新[已解决]
我不敢相信我错过了它,没有其他人抓到它,但这没关系,这是奇妙世界编码的一部分。我注意到它缺少一行来抓取正在构建的内部对象,从而解决了这个问题:
echo $obj->$thePage;
您需要
echo$table代码>在您的函数中
或者将函数返回的值存储在主代码中并回显
$data = array(
array("Name", $name),
array("Email", $email),
array("Hobby", $hobby),
array("", $stamp)
);
$obj = &New sH; //the class name
$table = $obj->buildTable($data);
echo $table;
确保错误报告和显示错误设置正确,并查看错误日志。PHP的白色页面输出通常表示错误。由于您的代码不完整,我无法对其进行测试。这已经足够了,我自己解决了它,谢谢您。虽然我几乎100%确定在使用类时这是不必要的,但我还是继续尝试了,以便能够肯定地说它没有做任何事情,谢谢您。我很高兴您让它工作起来。我不知道你说的“使用类时不必要”是什么意思,你指的是存储buildTable函数的结果还是回显它?看起来您的解决方案只是回显$obj->buildTable($data)
。这就是我的基本意思,我想我不应该说“你需要存储它”,只是你需要在某个地方重复它。我很想了解您尝试了什么,以及为什么它不起作用。我的意思是,这个类,我应该更具体一些,不返回任何内容,只是在内部维护所有内容,所以我必须实际地echo
输出其内部持有的变量。当然,情况并非总是如此。您的方法在逻辑上是合理的,只是不适用于这个特定的gizmo:)我最终意识到的是,没有一个函数实际返回类范围之外的任何内容,相反,它在内部将其附加到一个对象,在您完成所有需要的操作之后,它可能会使该对象和所有内容对您可用。这实际上是我很长时间以来见过的最糟糕的课程之一,但不幸的是,它被要求使用它。谢谢。因为你的想法和解决方案在精神上是一样的,我将继续并标记它,这样你就可以得到一些应得的东西,并让你的销售代表有点不高兴。
$data = array(
array("Name", $name),
array("Email", $email),
array("Hobby", $hobby),
array("", $stamp)
);
$obj = &New sH; //the class name
$table = $obj->buildTable($data);
echo $table;