私はWarning: Cannot use a scalar value as an array and memory leak.
スカラー値とメモリリークの問題
と関係があります非常に奇妙な状況に対処していますスクリプトは非常に簡単で、私は問題を把握することはできません。
コード
$variants=array();
if($text)
{
$v=explode(",",$text);
if(is_array($v) && sizeof($v)>0)
{
foreach($v as $i=>$part)
{
$tmp=explode(":",$part);
list($thekey,$thevalue)=$tmp;
//$variants=array();
echo "<div>TYPE==".gettype($variants)."</div>";
echo $variants[$tmp[0]]=$tmp[1];
}
}
}
上記のコードをスタンドアロンとして実行しても問題ありません。しかし、小さな部分が非常に奇妙な動作として私のフレームワークにそれを置く。私はWarning: Cannot use a scalar value as an array
を得て、それを解決するために、最初の行に
$variants=array();
を追加しました。スクリプトを実行すると、gettype
は最初に���
を返し、その後は整数を返します。
gettype
の直前にある$variants=array();
のコメントを外すと、動作します。もちろん、私はアレイ全体を取得しないで、最後のレコードのリターンだけを取得します。
すべての変数名を愚かに変更する前に私が使用する変数が宣言されていることを知るためにコードを解析しますが、運はありません。
コードをデバッグしてチューニングしようとすると、ブラウザで画面の何かを見る代わりにスクリプトを実行すると、代わりにスクリプトがダウンロードされ、何度かメモリリークが発生します。
誰でもどこを探すか、またはデバッグして解決することができますか?
$ idには何が含まれていますか? – methodin
@methodin example $ id = "text1"そして$ valueは$ text1の値を持っています – ntan
変数をポインタとして定義しますか?また、$ idが配列などの性質を指していない場合、その値が保証されていますか?このエラーは、通常、プリミティブ型を配列として使用する場合に発生します。 $ a = 2; $ a ['blah'] = 'テスト'; – methodin