2012-02-22 12 views
0

Fatal error: Cannot use string offset as an array変数配列名

私は、変数、配列名を使用して、配列のキーを見つけるためにしようとすると、これが表示されます:

class FOO { 
    protected $arr = array(); 
    function bar(){ 
     $aaaaaaaaaaaa = 'arr'; 
     $this->$aaaaaaaaaaaa[$somekey]; // <-- error 
     ... 
    } 
} 

私は、変数、配列の名前でこれを行うことができますどのように?コードのその部分の後

+0

関連する投稿を参照してくださいhttp://stackoverflow.com/questions/9374292/variable-name-as-variable – Kaii

+0

ok私はその現在の明確さを希望します – thelolcat

+0

私は私の答えを編集しました、しかし、それは明らかではありません。 – mindandmedia

答えて

2

@ MarcinJuraszekの場合、$arrを2番目に割り当てると、もはや配列ではありません。とにかく

、私はこのコードは、あなたが

<?php 
class foo 
{ 
    public function doStuff() 
    { 
     $name = 'arr'; 
     $this->{$name} = array('Hello world!'); 
     echo $this->{$name}[0]; 
    } 
} 

$obj = new foo; 
$obj->doStuff(); 
+0

thats it。ありがとうございます:D – thelolcat

2

$arr = 'arr'; 

の$編曲には複数のアレイではありません。これは単に 'arr'文字列を含む変数です。だから、鍵でアクセスすることはできません。

PHP: Arrays - Manualの情報を読む必要があります。

+0

ok私はそれを知っています:) '...'はプロパティの宣言の終了とメソッドの開始場所です。 – thelolcat

+0

次に正確に次回に問題を記述する必要があります。 – devOp

2
$this->{$arr}[$somekey] 

するつもりは何を信じていることは、あなたが後で再割り当てすること$arrだけでなく、あなたが実際に$this->arrに配列を割り当てることを提供(あなたが望むものである。

2

$arrは配列ではありません。最初に作成した文字列変数は$arr = 'arr';です。

これは正しいです:あなたが最初の配列として$のARRを定義している

$arr = array(); 
$arr[] = 'arr'; 
$somekey = 0; 

$this->$arr[$somekey] 
2

、あなたはOVER-書いてある文字列とその定義を。代わりに、多分あなたは、リストに要素を追加したい:

$arr = array(): 
$arr['aaaaaaaaaa'] = array(); 
$arr['aaaaaaaaaa'][$somekey] = 'arrVal'; 

echo $arr['aaaaaaaaaaa'][$somekey] 

と何...

アレイのリストを:

$arr = array(); 

$somekey = 'mykey'; 
$arr[$somekey] = 'arrVal'; 

echo $arr[$somekey] 

私はあなたが今欲しいものを知っている、と思いますすべての叫び声でアップ?

arr.push('arr'); 

:あなたが何をしたいかであってもよいし、

$arr = 'arr'; 

変数$ ARRは、もはや変数であると言うん後

1

は、その場合には、以下試してください配列にその値を追加することですその後、それは私が思うはたらくはずです

関連する問題