PHP不是我的强项,但我今天已经尝试了一些OO代码。除了在全局级别的$ replyArray数组不能通过我的solSet对象的jumble()类方法编写之外,一切都很好。我的代码中的倒数第二个var_dump显示一个空数组。我试过抛弃全球关键词并没有帮助。因为我通过引用我新实例化的类显式传递了这个变量,所以不应该这样吗? 谢谢! KK
$headers = 'From: "System (department)" <system@domain.org>' . "\r\n";
这似乎与: Using a global array inside a class 但这就是我所做的。此外,整个世界和他的狗都在说全球关键词是&#34;做错了&#34;。怎么办?
答案 0 :(得分:3)
您的function cf7_add_url() {
$url = get_permalink( $product_id );
return $url;
}
add_shortcode('CF7_ADD_URL', 'cf7_add_url');
方法需要通过引用获取[dynamictext Url "CF7_ADD_URL"]
- 默认情况下,PHP函数按值运行,这意味着它们对变量的副本进行操作,而不是对其进行修改。见http://php.net/manual/en/language.references.pass.php
更改
jumble
到
$replyArray
变量名前面的&符号表示参数通过引用传递。
答案 1 :(得分:1)
或者,不是从类中更新全局变量(不利于重用和可移植性),您只需返回新的混洗数组:
public function jumble($wh,$ts,$arrShuf)
{
$reply = array();
foreach($this as $key => $value)
{
$newX = rand (($ts/2),$wh - ($ts/2));
$newY = rand (($ts/2),$wh - ($ts/2));
$randNo = array_pop($arrShuf);
$value = "" . $newX . "_" . $newY . "_" . $randNo;
$this->$key = $value;
//push coords onto an array for later ajax
$pushElem = "" . $newX . "_" . $newY;
$reply[] = $pushElem;
}
return $reply;
}
...并使用响应更新您的全局$replyArray
:
//make a solution object
$aSolSet = new solSet;
$replyArray = $aSolSet->jumble($widhi,$tileDim,$randArray);
您甚至不需要将$reply
参数传递到您的方法中(注意,少一个参数),一切都很好并且自包含。
答案 2 :(得分:0)
引用函数
中的全局数组 global $replyArray;