2

foreachループでPHP定数を使用する必要があります。

define('WEBS', 'http://google.com, http://yahoo.com');
foreach (WEBS as $a) {
    //do something
}

しかし、私は次のコードでそれを行うことができましたが、それは正常に動作しますが、aptanaエディターは構文エラーを示します。正しい方法でそれを行う方法を教えてください。

foreach (get_defined_constants(true)['user']['WEBS'] as $w) {
//do something
} 
4

2 に答える 2

6

あなたはexplode最初に値を持っている必要があります

foreach (explode(', ', WEBS) as $url) { ...

explode()文字列を配列に分割して、反復できるようにします


または、を使用することもできますpreg_split

foreach(preg_split('/,\s*/', WEBS) as $url) { ...

preg_split()正規表現に基づいて文字列を分割できます。配列を返します。例として、この正規表現を使用すると、コンマに続くスペースはオプションです。

# a string like this
foo.com, hello.com,world.com,  test.com

# would still split properly to
[
  'foo.com',
  'hello.com',
  'world.com',
  'test.com'
]

正規表現メソッドは必ずしも必要ではありません。しかし、必要に応じてもう少し制御できることをお見せしたいと思いました。


PHP 5.4より前のバージョン[]では使用できないため、Aptanaはエラーを表示しています。func()これを回避するには、次のようなことができます。

$constants = get_defined_constants(true);
$constants['user']['WEBS'];

しかし、この場合WEBSは問題ないはずです。あなたが抱えていた唯一の問題は、最初に文字列を配列に変換する必要があるということです。

于 2012-12-24T10:20:00.783 に答える
0

定数の誤用のようです。

配列型の正規変数が必要なようです。

$webs = array('http://google.com', 'http://yahoo.com');
foreach ($webs as $a) {
    //do something
}

それでも定数が必要だと思う場合は、別の質問をして、その理由を説明し、何が間違っているのかを教えてください。

于 2012-12-24T10:25:11.800 に答える