您在這裡

array_merge的問題

hanamizuki's 的頭像
hanamizuki 在 2009-04-05 (周日) 20:59 發表

今天用了wyo版型,發現安裝完後會有這樣的錯誤碼:

warning: array_merge() [function.array-merge]: Argument #1 is not an array in /sites/all/themes/wyo/template.php on line 318.

然後打開該檔案,line318內容如下:
$output .= '

';

整段

<?php

function wyo_primary_links($links) {

$num_links = count($links);
$i = 1;

$output = '';
foreach ($links as $index => $link) {

$class = 'plink';

// Add first, last and active classes to the list of links to help out themers.
if ($i == 1) {
$class .= ' first';
}
if ($i == $num_links) {
$class .= ' last';
}

$plink_div_class = 'plink_div';
if (($link['href'] == $_GET['q']) || ($path == '' && drupal_is_front_page())) {
$plink_div_class = $plink_div_class .' active';
}

//以下開始是 line 318
$output .= '

';

$i++;
}
$output .= '';
return $output;
}
?>

不知問題出在哪邊?

array_merge() 是用來結合兩個(以上)陣列
所以傳入的參數必須是陣列的資料
錯誤訊息是指傳入的第一個參數並非陣列
比較常見的是為了省事,沒有事先判斷資料,造成空值傳入的時候導致錯誤
這邊的話 在 foreach 下面一行加上 if(!isset($link['attribute'])) $link['attribute'] = array();
判斷傳入的選單項目內的屬性資料不存在的時候,預設值為空陣列即可