我一直在編寫一個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