我一直在讨论写几个星期的PHP课程,我想我已经掌握了他的基础知识,但我有点难过。
作为我正在做的事情的简化示例:
我已经在我的类(someClass)和外部文件(config.php)中声明并实例化了一个公共变量($ myURL),并使用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()循环。
感谢。
答案 0 :(得分:2)
我相信你的三元条件有问题,试试这个:
class someClass
{
public $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'])
);
if ($add_my_url === true)
{
$array['URL'] = $row['URL'];
if (empty($array['URL']))
{
$array['URL'] = $this->myURL;
}
}
// merge array
$new_array[] = $array;
}
return $new_array;
}
}
答案 1 :(得分:0)
问题可能就在这里while($row = $db_result_array){
你应该试试for / foreach吗?