0

PHPで配列を使用すると、奇妙なことがありました。

$items = array();
$tools = json_decode($_GET['tools'],true);
foreach($tools as $key => $value)
{
   $items[$somevar][$anothervar] = $value;
}

それから私は繰り返すことができました$items

foreach($items as $key => $value)
{
  //Do Something
}

しかし、奇妙な部分は、 をもう一度反復しようとする$toolsforeach、 が返されることNULLです。

//Never Happens    
foreach($tools as $key => $value)
{
  //Do Something
}

これはガベージ コレクターが原因でしょうか?

私のアプリは、PHP 5.2.3、Linux CentOS、Apache 2.2 で実行されています。

4

3 に答える 3

1

いいえ、これがガベージ コレクションと関係があるとは思えません。

zvalガベージ コレクターは、 (PHP 変数コンテナー)refcountがゼロの場合にのみ削除します。これは、変数参照がデータを指していない場合にのみ削除されることを意味します。

を実行しない限りunset( $tools );、変数は使用できるはずです。

詳細については、 http://php.net/features.gc.refcounting-basics.phpを参照してください。

于 2012-07-25T14:59:44.300 に答える
0

はい、配列ではないため、次のように機能します。

$tools->key // Return the value of your occurence
于 2012-07-25T15:00:52.423 に答える
0

$toolsは配列ではなく、オブジェクトです。

これを次のように変更します。

$tools = json_decode($_GET['tools'], true);

true引数は、json をオブジェクトではなく配列にデコードします。

詳細はこちら: PHP ドキュメント

于 2012-07-25T14:53:30.667 に答える