我一直在编写一个PHP类几个星期,现在我喜欢认为我已经掌握了他的基础知识,但我有点难住。在While循环中清空的PHP类变量
作为一个简单的例子我在做什么:
我已经宣布并在我的课(SomeClass的)实例化的公共变量($ myURL)和一个外部文件(config.php文件)到类用变量填充URL(http://demo.com)。
在同一个类中的函数(make_array())中,我在while()循环中使用声明变量($ myURL)来构建数据的关联数组,以便在类之外使用以构建列出的输出(output.php)。
一旦我在外部文件(config.php)中使用类函数(set_myurl($ url))设置了变量,我可以通过使用echo打印设置的URL到页面。
问题出现在我循环访问数组时,我想将预定义变量($ myURL)设置为在我的类中使用make_array()函数构建的关联数组内的各种子数组文件。 make_array()函数获取MSSQL $结果,并循环创建插入URL的数组的行(如果不存在并且第二个参数($ add_my_url)设置为true)。
在函数中,定义的变量变为空,但仍然保持设置状态,因为我使用内置的PHP函数empty(),isset()和is_null()对其进行了测试,以解决问题。
我想知道是否有人对他们有这种情况有任何的知识或经验。
的我在做什么
<?php
class someClass {
var $myURL = '';
public function set_myurl($url){
$this->myURL = $url;
}
public function make_array($db_result_array, $add_my_url = false){
$new_array = array();
while($row = $db_result_array){
// build array
$array = array(
'Amount' => $row['Amount'],
'Description' => $row['Description'],
'URL' => ($add_my_url ? (!$row['URL'] ? $this->myURL : $row['URL']) : $row['URL'])
);
// merge array
$new_array[] = $array;
}
return $new_array;
}
}
?>
<?php
// config.php
$myClass = new someClass;
$myClass->set_myurl('http://demo.com');
// this works and displays: http://demo.com
echo $myClass->myURL;
?>
一个简短的想法,我知道这个例子实际上是抽象的,但我没有要发布的全部2000行PHP的。
如果您需要更多说明,请确认。我非常有把握把这个问题缩小到了这个函数和while()循环中。
谢谢。
您的示例按照我的预期工作。 – blinry 2010-02-12 11:14:54