PHPで、キーを角かっこで囲まずに配列の値にアクセスするにはどうすればよいですか?私の特定の問題は、関数によって返される配列の要素にアクセスしたいということです。関数(args)が配列を返すと言います。$ var = function(args)[0];なのはなぜですか。角かっこについて私に怒鳴りますか?$ var = function(args).value(0);のようなことはできますか?または私は非常に基本的なものが欠けていますか?
5 に答える
他の人が言っているように、あなたはほとんど一時変数を使わなければなりません:
$temp = myFunction();
$value = $temp[0];
ただし、返される配列の構造がわかっている場合は、一時変数を回避できます。
最初のメンバーが必要な場合:
$value = reset(myFunction());
最後のメンバーが必要な場合:
$value = end(myFunction());
間に誰かが必要な場合:
// second member
list(, $value) = myFunction();
// third
list(, , $value) = myFunction();
// or if you want more than one:
list(, , $thirdVar, , $fifth) = myFunction();
PHPでは、関数の結果として配列を取得する場合、残念ながら追加の手順を実行する必要があります。
$temp_array = function($args);
$var = $temp_array[0];
オブジェクトの場合、これはPHP5で緩和されています。次のことができます。
$echo function($args)->property;
(function
もちろんオブジェクトを返します。)
あなたの期待に正確に一致するものは次のとおりです。
echo pos(array_slice($a=myFunc(), pos(array_keys(array_keys($a), 'NameOfKey'));
台北のキネティックス・キンが答えた
これが必要な場合は、オブジェクトを返すのがおそらく最善です(残念ながら、完全に不完全なphpはこれをサポートしていません)。これが私が理解できたクレイジーな方法ですが、目新しさからです(これをしないでください!):
function returnsArray(){
return array("foo" => "bar");
}
echo json_decode(json_encode((object)returnsArray()))->foo;
//prints 'bar'
つまり、phpで配列の逆参照のサポートが追加されるまでは、おそらく戻り値の配列をオブジェクトとしてキャストする必要があると思います。
return (object)array("foo" => "bar");
次に、returnsArray()-> fooを実行できます。これは、phpがオブジェクトの逆参照を緩和するが、配列は緩和しないためです。または、もちろん、他の人が提案しているようにラッパー関数を記述します。
function getKey($array, $key){
return $array[$key];
}
$var = getKey(myFunc(args), $key);
残念ながら、ユーザー関数を追加せずにこれを行う方法はありません。これは構文の一部ではありません。
あなたはいつもそれを昔ながらの方法で行うことができます
$array = myFunc();
$value = $array[0];