我在使用数组时遇到了麻烦。我不知道为什么,但我的菜单无法读取我的数组...
我总是收到此通知: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);
}
?>
答案 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);
}
}