此功能一次只能在一个字段上运行:
foreach ($GLOBALS as $key => $value) {
if ($key === "special1") {
{$value = preg_replace('/src/','data-machin', $value);
}}}
这一个 - 没有条件(因此它试图处理360个字段)不会:
foreach ($GLOBALS as $key => $value)
{$value = preg_replace('/src/','data-machin', $value);
}
并生成此致命错误:无法在第145行的/home/xxx/public_html/lib/mysqldb.php中增加/减少重载对象或字符串偏移量。
我怎么能让它发挥作用?
(大图:我正在尝试实施一个脚本来延迟加载照片)。
答案 0 :(得分:1)
虽然使用全局变量通常是一个坏主意,更糟糕的是做这样的盲变量操作,你可以这样做:
foreach ($GLOBALS as $key => $value) {
if (is_string($value)) {
$GLOBALS[$key] = preg_replace('/src/','data-machin', $value);
}
}
更新为包括is_string()
,用于检查值是否为字符串。
答案 1 :(得分:0)
preg_replace
仅对字符串值有意义。
因此,您可以使用is_string
函数在迭代时检查值:
foreach ($GLOBALS as $key => $value) {
if (is_string($value)) {
$value = preg_replace('/src/','data-machin', $value);
}
}
另请注意,这段代码不会产生副作用 - 即$GLOBALS
数组不修改。您可以考虑使用references代替:
foreach ($GLOBALS as $key => &$value) {
...
}
unset($value);