在下面的第一个foreach语句中,$ widgets变量之前的&符号的存在导致旧版本的PHP被阻塞。问题是没有&符号时该功能不起作用(我不记得为什么它需要,因为它是由另一个开发人员开发的。)
我的问题是,为什么会导致PHP 4.4出错?为什么首先需要它?
function exclude_widget_check( $sidebars_widgets )
{
if(is_home())
{
foreach ( $sidebars_widgets as $sidebar_id => &$widgets ) {
if ( 'my-widget' != $sidebar_id ) {
continue;
}
foreach ( $widgets as $idx => $widget_id ) {
if ( 0 === strncmp( $widget_id, 'my_slider', 6 ) ) {
echo 'Unset widget';
unset( $widgets[$idx] );
}
}
}
}
return $sidebars_widgets;
}
答案 0 :(得分:0)
看起来你遇到了引用问题。您可能正在处理有关其较早实现的问题。
答案 1 :(得分:0)
&符号是PHP中的“按引用传递”运算符。 IE,这意味着当你编辑$ widgets时,你正在编辑$ sidebars_widgets数组中的实际元素,而不是它的副本。
如果它不能与旧版本的PHP一起使用,我只会通过索引访问原始元素,改变它:
unset( $widgets[$idx] );
到此:
unset( $sidebar_widets[$sidebar_id][$idx] );