2014-08-27 75 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

相關問題