【问题标题】:do array() destroy all previous values?array() 会破坏所有以前的值吗?
【发布时间】:2011-08-16 05:42:47
【问题描述】:

我有一个 $array,其中存储了一些值。现在,如果我这样做:

$array=array();

所有值/索引都被删除了吗?或者我需要在它之前使用 unset() ?

【问题讨论】:

  • 结账这么难?
  • 嗯...所以告诉我“是”不是一个有效的答案。
  • "yes" 太短了 - 你必须更详细一点。
  • 喜欢。 “是的:你需要每天吃一个苹果才能保持健康、富有和智慧……”;-)

标签: php arrays


【解决方案1】:

正在使用array() 创建一个 数组,并将这个 数组对象分配给变量$array

变量 ($array) 不再指向 original 数组对象 -- 而且因为 PHP 是一种垃圾收集语言 -- original 数组对象将符合回收条件如果(且仅当)它不再可以从根对象强烈访问。 (实际删除前一个数组对象及其包含的对象的实际时间取决于其他因素。)

编码愉快。


请参阅PHP Garbage Collection Manual 了解更多详情——PHP 使用混合 GC(引用计数和循环中断)。

【讨论】:

    【解决方案2】:

    是的,重新分配只是清除了数组中的所有数据。但要清楚了解垃圾收集,请查看PHP Reference Counting Basics

    【讨论】:

      【解决方案3】:
      $array = array('apples', 'oranges', 'bananas');
      print_r($array);
      //Array ( [0] => apples [1] => oranges [2] => bananas ) 
      
      $array = array();
      print_r($array);
      //Array ( )
      

      【讨论】:

      • 对。但这并没有解决这是否是安全操作。 (例如,对于手动分配的对象,它不在 C 中)。稍微扩展一下答案。
      【解决方案4】:

      如果你使用类似的东西,你的意图会更清楚

      $array = null; 
      

      (如果您使用比 $array 更好的名称,则更清楚!)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-25
        相关资源
        最近更新 更多