PHP数组推入循环不会更改循环外的数组

时间:2015-10-21 06:17:22

标签: php arrays loops foreach

我遇到了以下问题:

private function getMyThemeIds($collection){
    $result = [];
    ...
      foreach ($results as $doc) {
        file_put_contents('2.txt', $doc->getUnid()); //everything is fine here

        $result[] = $doc->getUnid();

        file_put_contents('3.txt', print_r($result,true)); //again, array is just fine, barely 4000 entries
      }

    file_put_contents('4.txt', print_r($result,true)); // but here we see what was in this array right after initialization. Nothing in this case.
    return $result;
  }

我尝试了不同的方法 - 将foreach更改为for,将$result[]更改为array_push等,但无济于事。谁知道这可能是什么原因?

2 个答案:

答案 0 :(得分:2)

您可以使用'array()'初始化数组。请按照以下语句初始化数组

$result = array();

初始化$ result后,您可以向其追加数据。 您可以参考以下链接进行阵列初始化 - http://www.w3schools.com/php/func_array.asp

答案 1 :(得分:0)

有关详细信息,请参阅file_put_contents。你可以试试这个。

private function getMyThemeIds($collection){
    $result = array();
    ...
      foreach ($results as $doc) {
        file_put_contents('2.txt', $doc->getUnid()); //everything is fine here

        $result[] = $doc->getUnid();

        file_put_contents('3.txt', serialize($result)); //again, array is just fine, barely 4000 entries
      }

    file_put_contents('4.txt', serialize($result)); // but here we see what was in this array right after initialization. Nothing in this case.
    return $result;
  }