2011-07-16 3 views
2

私は、例えば、その中に単一の値を持つ連想配列を返すclassメソッドを持っています。今変数に代入することなく、関数(メソッド)呼び出しから配列の値を取得できますか?

以下のメソッド・コール

print_r($acl->getPermNameFromId(1)); 

戻り、次の値

Array ([permName] => Access Admin) 

代わり

$permName = $acl->getPermNameFromId(1); 
$permName = $permName['permName']; 

ような変数に関数呼び出しを割り当てることによって、値にアクセスするあります私は直接文字列として値にアクセスすることができますどのような方法ですか?

たとえば、私は、上記の構文が間違っているofcourseの

echo $acl->getPermNameFromId(1){$permName}; 

でアクセスしたいと思います。しかし、私はこれを行うことを許可するPHPの方法はありますか?

ありがとうございました。

答えて

1

私はあなたが直接アクセスを使用して取得しようとは思わない。私の最初の考えは@Cameronのようだった。

しかし、私が思った次のことは、ちょっとしたトリックですが、その正確なキーで配列を返すことを前提としています。

echo array_search('permName', array_flip($acl->getPermNameFromId(1))); 
1

echo $acl->getPermNameFromId(1)['permName'];トリックを行います。連想配列を特定の変数に割り当てることなくそれを検索することは、まったく受け入れられます。

一方、変数に代入すると、実際には何もコストがかからず、コードを読みやすくなります。

+0

上記の構文を使用すると、それは次のエラーを出します。 'Parse error:予期しない構文エラーです。 '['、expecting '、' or ';' in /Users/index.php on line 17'で、それを変数に割り当てることは私には何の費用もかかりません。しかし、私は配列内で複数回使用する関数が必要なので、これが私がこのようなものを探していた理由です。 –

+0

hh。私はPHPがその構文を可能にすると思った。言語からかなりの漏れがあるようです。 –

0

idとpermNameを渡すことのできる別のメソッドをクラスに追加することをお勧めします。

echo $acl->getPermNameWithId(1, 'permName'); 

次に、in in array selectionsを使用できます。

関連する問題