2014-03-31 61 views
1

我有麻煩使用數組。我不知道爲什麼,但我的菜單不能看我的陣列...PHP - 通知:未定義抵消:0在

我總是收到此通知:PHP - 注意:未定義抵消:0

function DB_array($query,$return_type){ 
    connect(); 
    $q = mysql_query($query); 


    switch ($return_type){ 

     case 'a+': 
      $num_fields = mysql_num_fields($q); 
      $j=0; 
      $x = 0; 
      $val = array(); 
      while($row = mysql_fetch_array($q)){ 
       for ($j=0; $j < $num_fields; $j++){ 
        $name = mysql_field_name($q, $j); 
        $val[$x][$name] = $row[$name]; 
       } 
       $x++; 
      } 
      break; 

菜單代碼

<?php 

/*Return Type - Symbology 
*  //SELECT 
*  a+ | Data to array 
*/ 

include(PATH_ROOT . '/modules/menu/view/menu_view.php'); 
function menuModel(){ 
     $query = ("SELECT * FROM menu WHERE back = 1"); 
     $val = DB_array($query,'a+'); 
     $name = $val['0']['friendlyname']; 
     $url = $val['0']['url']; 
     menu($url,$name); 
} 
?> 
+1

檢查併發布使用'var_dump($ val);'得到的數據。 – Rikesh

+1

數組是否包含某些東西?嘗試'var_dump($ val)'並檢查它。 –

回答

1

您正在訪問數組鍵作爲一個字符串時,它是一個整數,因爲你這樣設置:

$val[$x][$name]假設你x$x = 0;

試試這個:

$name = $val[0]['friendlyname']; 
$url = $val[0]['url']; 
+1

我試過了,但它不起作用 – user3429726

+1

正如其他人在評論中提到的那樣,嘗試'var_dump($ val);'並顯示輸出 – ponciste

0

除非你的數組鍵是你正在訪問他們錯了弦。而不是做

$name = $val['0']['friendlyname']; 
$url = $val['0']['url']; 

你需要做的

$name = $val[0]['friendlyname']; 
$url = $val[0]['url']; 

如果你仍然得到錯誤,那麼它的問題,因爲數組是空的。因此,在嘗試使用它之前檢查一下是個好主意。例如

function menuModel(){ 
    $query = ("SELECT * FROM menu WHERE back = 1"); 
    $val = DB_array($query,'a+'); 

    //Check to see if the array contains anything 
    if(!empty($val)) { 
     $name = $val[0]['friendlyname']; 
     $url = $val[0]['url']; 
     menu($url,$name); 
    } 
}