如何使变量数组可用于整个代码。
例如,我需要在一个类或函数中向$ids[]
添加整数,以便我可以在常规代码中使用它:
class displayClass {
public function display($field){
$fieldNum=0;
$puzzle=$field;
echo "<form action=\"index.php\" method=\"post\"><table border = \"3\" ><tr>" ;
for($i=1;$i<=36;$i++){
if($puzzle[$i]==0){
echo "<td><input type=\"text\" name=\"field".$i."\" maxlength=\"1\" size=\"1\"/></td>";
//problem is above... need to sava ids of fields..don't know how
} else {
echo "<td>".$puzzle[$i]."</td>";
}
if($i%6==0){
echo "</tr><tr>";
}
}
echo "</td></table></form>";
}
}
我需要将$i
添加到类外的新现有数组中。
编辑:
我该如何解决这个问题 严格标准:不应在第35行的Z:\ dev \ organization1 \ project1 \ htdocs \ web \ sudoku \ index.php中静态调用非静态方法displayClass :: display()
答案 0 :(得分:3)
<强> 1。班级成员
class displayClass
{
// Members
// Visible only from inside the class
private $fieldIds = array();
// Visible from outside the class by using the instance ($displayClass->publicFieldIds)
public $publicFieldIds = array();
// Methods
public function display($field)
{
// ...
// Add new field ID to member
$this->fieldIds[] = 1;
// ...
}
}
的 2。 global
关键字
global $a, $b;
请参阅http://www.php.net/manual/en/language.variables.scope.php
第3。单身人士模式
请参阅网络上已有的说明:
http://en.wikipedia.org/wiki/Singleton_pattern
答案 1 :(得分:0)
class MyClass {
public $a;
public static $b;
public function MyMethod {
// use $a or $b here
}
}
$myInstance = new MyClass();
$myInstance->$a = 0; // you can access a from outside like this
MyClass::$b = 0; // you can access static b from outside like this
答案 2 :(得分:-1)
如果您必须这样做,那么这表明您使用的代码库存在设计和体系结构问题,这超出了本问题的范围。
但是要解决您的问题,请使用global
关键字:
class displayClass {
public function display($field){
global $YOUR_VARIABLE_HERE;
// for example:
global $ids;
$fieldNum=0;
$puzzle=$field;
echo "<form action=\"index.php\" method=\"post\"><table border = \"3\" ><tr>" ;
for($i=1;$i<=36;$i++){
if($puzzle[$i]==0){
echo "<td><input type=\"text\" name=\"field".$i."\" maxlength=\"1\" size=\"1\"/></td>";
//problem is above... need to sava ids of fields..don't know how
} else {
echo "<td>".$puzzle[$i]."</td>";
}
if($i%6==0){
echo "</tr><tr>";
}
}
echo "</td></table></form>";
}
}
当然假设$ids[]
确实是一个具有全局范围的变量,并且未在现有函数或类中定义。
答案 3 :(得分:-1)
最好的方法是为您的代码正确规划。
设置名为'displayClass'的类中的任何全局变量都是设计不良的明确标志 你必须在其他地方准备变量,然后在这个类和其他代码中使用。
并使用一些简单易懂的代码(如
)$ids = getWhateverIds();
在全球范围内。