在foreach循环中使用PHP常量

在foreach循环中使用PHP常量,php,Php,我需要在foreach循环中使用PHP contants: define('WEBS', 'http://google.com, http://yahoo.com'); foreach (WEBS as $a) { //do something } 然而,我通过以下代码实现了这一点,尽管它工作得很好,但aptana编辑器显示了语法错误。请指导我如何以正确的方式做到这一点 foreach (get_defined_constants(true)['user']['WEBS'] as $w

我需要在foreach循环中使用PHP contants:

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
} 

您必须先分解这些值

foreach (explode(', ', WEBS) as $url) { ...
将字符串拆分为数组,以便可以对其进行迭代


或者,您甚至可以使用
preg\u split

foreach(preg_split('/,\s*/', WEBS) as $url) { ...
允许您基于正则表达式拆分字符串。它返回一个数组。例如,使用此正则表达式,逗号后面的空格是可选的

# 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'
]
Regex方法并不总是必需的。但我想我会告诉你,在必要的时候,更多的控制是可用的


Aptana向您显示了一个错误,因为在PHP5.4之前的
func()
之后不能使用
[]
。要解决这个问题,您可以采取以下措施:

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

但是在这种情况下,
WEBS
应该可以。您遇到的唯一问题是需要先将字符串转换为数组。

看起来像是滥用常量

似乎需要数组类型的正则变量

$webs = array('http://google.com', 'http://yahoo.com');
foreach ($webs as $a) {
    //do something
}
如果你仍然认为常数是你所需要的-最好问另一个问题,解释为什么会这样,并被告知你做错了什么