在 PHP 中通过引用传递变量的问题
Issue with passing variables by reference in PHP
我的 Wordpress 前端有这条通知消息:
"注意:在...中只能通过引用传递变量"
通知是针对这行PHP代码:
$parent_id = array_pop( wp_filter_object_list( $items, array( 'title' => $args->submenu ), 'and', 'ID' ) );
这是完整的 PHP 代码:
add_filter( 'wp_nav_menu_objects', 'get_submenu', 10, 2 );
function get_submenu( $items, $args ) {
if ( empty($args->submenu) ) {
return $items;
}
$parent_id = array_pop( wp_filter_object_list( $items, array( 'title' => $args->submenu ), 'and', 'ID' ) );
$children = submenu_get_children_ids( $parent_id, $items );
foreach ( $items as $key => $item ) {
if ( ! in_array( $item->ID, $children ) ) {
unset($items[$key]);
}
}
return $items;
}
function submenu_get_children_ids( $id, $items ) {
$ids = wp_filter_object_list( $items, array( 'menu_item_parent' => $id ), 'and', 'ID' );
foreach ( $ids as $id ) {
$ids = array_merge( $ids, submenu_get_children_ids( $id, $items ) );
}
return $ids;
}
我无法通过解决问题成功删除通知。在此先感谢您的帮助。
试试这个:
$filter_items = wp_filter_object_list( $items, array( 'title' => $args->submenu ), 'and', 'ID' );
$parent_id = array_pop( $filter_items );
原因是wp_filter_object_list数组是引用传递的,因为它被函数array_pop[=18修改了=].这意味着您需要传递 array_pop 一个真正的变量而不是一个函数。
我的 Wordpress 前端有这条通知消息:
"注意:在...中只能通过引用传递变量"
通知是针对这行PHP代码:
$parent_id = array_pop( wp_filter_object_list( $items, array( 'title' => $args->submenu ), 'and', 'ID' ) );
这是完整的 PHP 代码:
add_filter( 'wp_nav_menu_objects', 'get_submenu', 10, 2 );
function get_submenu( $items, $args ) {
if ( empty($args->submenu) ) {
return $items;
}
$parent_id = array_pop( wp_filter_object_list( $items, array( 'title' => $args->submenu ), 'and', 'ID' ) );
$children = submenu_get_children_ids( $parent_id, $items );
foreach ( $items as $key => $item ) {
if ( ! in_array( $item->ID, $children ) ) {
unset($items[$key]);
}
}
return $items;
}
function submenu_get_children_ids( $id, $items ) {
$ids = wp_filter_object_list( $items, array( 'menu_item_parent' => $id ), 'and', 'ID' );
foreach ( $ids as $id ) {
$ids = array_merge( $ids, submenu_get_children_ids( $id, $items ) );
}
return $ids;
}
我无法通过解决问题成功删除通知。在此先感谢您的帮助。
试试这个:
$filter_items = wp_filter_object_list( $items, array( 'title' => $args->submenu ), 'and', 'ID' );
$parent_id = array_pop( $filter_items );
原因是wp_filter_object_list数组是引用传递的,因为它被函数array_pop[=18修改了=].这意味着您需要传递 array_pop 一个真正的变量而不是一个函数。