2014-08-27 74 views
0

我继承了Drupal 7网站的维护,并且我没有PHP经验,我需要一些帮助。我刚刚将Drupal更新到了7.31,并且在.inc文件的第43和86行出现错误“只能通过引用传递变量...”。只有变量应通过引用传递

这里是第43行: $ item = array_shift(array_values($ data));

这里是第86行: $ item = array_shift(array_values($ data));

任何人都可以帮我吗?

我不知道这是允许的,但这里的.INC文件

<?php 

$plugin = _cdd_core_content_type_plugin('nauticus_core', 'menu_full_leaf', 'Page: menu leaf', array(
'description' => 'Add menu children', 
), array(
'override_title'  => 1, 
'override_title_text' => '' 
), 'Sail Nauticus'); 

function nauticus_core_menu_full_leaf_content_type_plugin_render($subtype, &$conf, $panel_args) { 
$trail = menu_get_active_trail(); 
$menu = ''; 
if (is_array($trail)) { 
$leaf = array_pop($trail); 
if (isset($leaf['menu_name'])) { 
    $menu_name = $leaf['menu_name']; 
    if ($menu_name !== 'navigation') { 
    $depth = $leaf['depth']; 
    $p1 = $leaf['p1']; 

    $data = menu_tree_page_data($menu_name, $depth + 1); 
    foreach ($data as $i => $item) { 
     if ($item['link']['mlid'] !== $leaf['plid'] 
     && !($leaf['plid'] == 0 && ($item['link']['mlid'] == $leaf['mlid'])) 
    ) { 
     unset($data[$i]); 
     } 
    } 

    if (sizeof($data) > 1) { 
     $menu = menu_tree_output($data); 
     foreach ($menu as $i => $item) { 
     if (isset($item['#original_link'])) { 
      if ($item['#original_link']['mlid'] !== $p1) { 
      if (isset($menu[$i]['#below'])) { 
       $menu[$i]['#below'] = array(); 
      } 
      } 
     } 
     } 
    } 
    elseif (sizeof($data) == 1) { 
     $item = array_shift(array_values($data)); 
     if (isset($item['below']) && !empty($item['below'])) { 
     $menu = menu_tree_output($item['below']); 
     foreach ($menu as $i => $item) { 
      if (isset($item['#original_link'])) { 
      if ($item['#original_link']['mlid'] !== $p1) { 
       if (isset($menu[$i]['#below'])) { 
       $menu[$i]['#below'] = array(); 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 
} 

return $menu; 
} 

function nauticus_core_menu_full_leaf_content_type_plugin_title($subtype, &$conf, $panel_args) { 
$title = 'Navigation'; 

$trail = menu_get_active_trail(); 
if (is_array($trail)) { 
$leaf = array_pop($trail); 
if (isset($leaf['menu_name'])) { 
    $menu_name = $leaf['menu_name']; 
    if ($menu_name !== 'navigation') { 
    $depth = $leaf['depth']; 
    $p1 = $leaf['p1']; 

    $data = menu_tree_page_data($menu_name, $depth + 1); 
    foreach ($data as $i => $item) { 
     if ($item['link']['mlid'] !== $leaf['plid'] 
     && !($leaf['plid'] == 0 && ($item['link']['mlid'] == $leaf['mlid'])) 
    ) { 
     unset($data[$i]); 
     } 
    } 

    if (sizeof($data) >= 1) { 
     $item = array_shift(array_values($data)); 
     if (isset($item['link']) && !empty($item['link'])) { 
     if (isset($item['link']['link_title'])) { 
      $title = $item['link']['link_title']; 
     } 
     } 
    } 
    } 
} 
} 

return $title; 
} 

回答

0

array_shift代码需要的第一个参数是通过引用传递和array_values返回数组。

变化对您具有$item = array_shift(array_values($data));

$item = array_values($data); 
$item = array_shift(&$item); 

&线意味着变量通过引用通。这应该可以解决你的问题。

如果这不起作用只是删除&。

0

变化

$item = array_shift(array_values($data)); 

$tmp = array_values($data); 
$item = array_shift($tmp); 
+0

这解决了问题。我不再收到错误。非常感谢! – Eryn 2014-08-28 06:04:04