无法从类方法将值写入全局PHP数组

时间:2016-07-21 10:46:27

标签: php arrays object

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;。怎么办?

3 个答案:

答案 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;