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'
]

正则表达式方法并不总是必要的。但我想我会告诉你,在必要时可以进行更多控制。


Aptana 向您显示一个错误,因为在 PHP 5.4 之前的版本[]之后您无法使用。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 回答