配列の要素を含む文字列があります。文字列からPHP呼び出し配列
$str = '[some][string]';
$array = array();
にはどうすれ$str
を使用して$array['some']['string']
の値を得ることができますか?
配列の要素を含む文字列があります。文字列からPHP呼び出し配列
$str = '[some][string]';
$array = array();
にはどうすれ$str
を使用して$array['some']['string']
の値を得ることができますか?
あなたはそれを使用して快適かどうか知りませんが、evalを使用して行うことができます。
$array['some']['string'] = 'test';
$str = '[some][string]';
$code = sprintf('return $array%s;', str_replace(array('[',']'), array('[\'', '\']'), $str));
$value = eval($code);
echo $value; # test
しかし、evalをあなたがそれを使用する必要があるときにデザイン上の欠陥があることが最もよく示されているため、常に適切なツールではありません。
あなたは配列項目へのアクセスを記述する必要がある場合は別の例として、次の操作を実行できます。
$array['some']['string'] = 'test';
$str = '[some][string]';
$path = explode('][', substr($str, 1, -1));
$value = &$array;
foreach($path as $segment)
{
$value = &$value[$segment];
}
echo $value;
$value = 'changed';
print_r($array);
これは実際Eric's answerではなく、変数を参照すると同じ原理です。
// trim the start and end brackets
$str = trim($str, '[]');
// explode the keys into an array
$keys = explode('][', $str);
// reference the array using the stored keys
$value = $array[$keys[0][$keys[1]];
:
$keys = explode('][', substr($str, 1, -1));
$value = $array;
foreach($keys as $key)
$value = $value[$key];
echo $value
は実は、これが最良のcase.Iが@hakreから受け入れを削除しませんが、私が参加したことすべてに.Thanks +あなたを与えたです! –
多目的配列では機能しません。 –
@Daniel:詳細を教えてください。 [それは私の作品](http://ideone.com/tXd6tG) – Eric
私は正規表現が良いトリックを行うべきだと思う:
$array['some']['string'] = 'test';
$str = '[some][string]';
if (preg_match('/\[(?<key1>\w+)\]\[(?<key2>\w+)\]/', $str, $keys))
{
if (isset($array[$keys['key1']][$keys['key2']]))
echo $array[$keys['key1']][$keys['key2']]; // do what you need
}
をしかし、私は配列であなたの方法を扱う前に、二回と思うだろう:D
私はあなたが何をしようとして考えてはとてもではないでしょうとにかく良い練習。 '$ array [$ key1] [$ key2]'を実行する方が良いでしょう。 –