在foreach循环中使用PHP常量

use*_*640 2 php

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

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

但是我设法通过以下代码来做到这一点,虽然它工作正常,但aptana编辑器显示语法错误.请指导我如何以正确的方式做到这一点.

foreach (get_defined_constants(true)['user']['WEBS'] as $w) {
//do something
} 
Run Code Online (Sandbox Code Playgroud)

mač*_*ček 6

你必须先explode得到价值观

foreach (explode(', ', WEBS) as $url) { ...
Run Code Online (Sandbox Code Playgroud)

explode() 将字符串分解为数组,以便您可以遍历它


或者,您甚至可以使用preg_split.

foreach(preg_split('/,\s*/', WEBS) as $url) { ...
Run Code Online (Sandbox Code Playgroud)

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'
]
Run Code Online (Sandbox Code Playgroud)

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


Aptana向您显示错误,因为您不能[]func()PHP 5.4之前使用.为了解决这个问题,你可以做以下事情:

$constants = get_defined_constants(true);
$constants['user']['WEBS'];
Run Code Online (Sandbox Code Playgroud)

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