PHP - 注意:未定义的偏移量:0英寸

时间:2014-03-31 09:13:12

标签: php

我在使用数组时遇到了麻烦。我不知道为什么,但我的菜单无法读取我的数组...

我总是收到此通知: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);
}
?>

2 个答案:

答案 0 :(得分:1)

当您将数组键设置为整数时,您将以字符串形式访问数组键:

$val[$x][$name]假设您的x$x = 0;

试试这个:

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

答案 1 :(得分: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);
    }
}