PHP将局部数组视为全局数组

PHP将局部数组视为全局数组,php,variables,global,local,Php,Variables,Global,Local,我有一张这样的照片: foreach ($posts as $post) { $postArray[] = array( "title" => $post->title, "date" => date("d.m.Y", $post->created), // ... etc ); var_dump($postArray); } $postArray不是这个循环之外的任何地方,但是每个循环迭代都会添加到现有数组中,就像这个变量是

我有一张这样的照片:

foreach ($posts as $post) {

    $postArray[] = array(
    "title" => $post->title,
    "date" => date("d.m.Y", $post->created),
    // ... etc
  );

  var_dump($postArray);
}
$postArray
不是这个循环之外的任何地方,但是每个循环迭代都会添加到现有数组中,就像这个变量是全局变量一样,而不是创建一个新的变量


这是PHP设置吗?记住,我并没有真正改变任何默认WAMP给我的设置。有什么想法吗?

它不是一个全局变量,但按照语法的编写方式,它在第一次迭代后变为全局变量。这是因为您使用的是
[]
数组推送
速记。通常我们将其用作
array\u push()

你想做的是-

$postArray = array(
  ...
);

这样,在每次迭代中,您都会得到一个全新的
$postArray
对象。

它不是一个全局变量,但按照您编写语法的方式,它在第一次迭代后变为全局变量。这是因为您使用的是
[]
数组推送
速记。通常我们将其用作
array\u push()

你想做的是-

$postArray = array(
  ...
);

这样,在每次迭代中,您将得到一个全新的
$postArray
对象。

$myArray[]=$newVariable将附加到数组中

如果您想要一个新的数组,只需重新声明,或者在每个循环的开头清空数组

$myArray = array();
$myArray[] = $data;

$myArray[]=$newVariable将附加到数组中

如果您想要一个新的数组,只需重新声明,或者在每个循环的开头清空数组

$myArray = array();
$myArray[] = $data;

foreach仅适用于数组和对象,当您尝试在具有不同数据类型的变量或未初始化的变量上使用它时,它将发出错误


这里我们使用的是本身支持数组的foreach。

foreach仅在数组和对象上工作,当您尝试在具有不同数据类型的变量或未初始化的变量上使用它时,将发出错误


这里我们使用的是本身支持数组的foreach。

PHP具有函数级作用域,而不是块级作用域。如果此代码不在函数/类方法中,或者它是函数的局部变量,而不是循环的局部变量,则该变量实际上是全局变量。PHP具有函数级作用域,而不是块级作用域。如果此代码不在函数/类方法中,或者它是函数的局部变量,而不是循环的局部变量,则该变量实际上是全局变量

此foreach的范围是什么?请注意,与C/C++和其他一些语言不同,在PHP中{}不会创建新的作用域。这个论坛的范围是什么?请注意,与C/C++和其他一些语言不同,在PHP中{}不会创建新的作用域@不用担心!很乐意帮忙:)@inf-不用担心!很乐意帮忙:)再看看这个问题。我想你看错了。你的答案与这个问题没有任何关系……你正在尝试,这很好,你应该继续这样做!:)然而,在这种情况下,我认为你应该再看看这个问题。你没有回答这个问题。
foreach
循环没有问题,没有出现错误。唯一的问题是数组在循环的每一次迭代中都被append,而不是初始化。我想你看错了。你的答案与这个问题没有任何关系……你正在尝试,这很好,你应该继续这样做!:)然而,在这种情况下,我认为你应该再看看这个问题。你没有回答这个问题。
foreach
循环没有问题,没有出现错误。唯一的问题是数组在循环的每一次迭代中都被append,而不是初始化。