在foreach循环中使用PHP常量
我需要在foreach循环中使用PHP contants:在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
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
}
如果你仍然认为常数是你所需要的-最好问另一个问题,解释为什么会这样,并被告知你做错了什么