这是我拥有的源$pData
数组:
Array
(
[code] => 105132
[globalImages] => Array
(
[0] => 1148-1578-image_41ddeeef69eb94a8d9ccc1503d099810.jpg
)
[envImages] => Array
(
[0] => 1148-0-image_72e95c6424ec7bcd90994f1c0a3f4544.jpg
)
[attribs] => Array
(
[0] => Array
(
[0] => Array
(
[id] => 1578
[uniqCode] => 105132-1578
[parentId] => 0
[type] => Colour
)
)
)
)
当我使用以下(line 337
)调用值时:
<?php echo strtolower($pData['attribs'][0][0]['type']);?>
PHP错误日志包含以下行:
[13-Jan-2010 11:48:21] PHP Notice: Undefined offset: 0 in D:\apps\path\to\file\pages\product.php on line 337
我可能做错了什么?据我所知,这个简单的电话没有任何问题。可能有人看到一些可疑的东西?
感谢您的任何意见!
我忘了说echo
会产生正确的结果。但它也会在错误日志中生成指定的条目。
var_dump($pData['attribs'])
输出:
array(1) {
[0]=>array(2) {
[0]=>array(22) {
["id"]=>string(4) "1578"
["uniqCode"]=>string(11) "105132-1578"
["parentId"]=>string(1) "0"
["type"]=>string(6) "Colour"
["title"]=>string(5) "Beech"
["swatch"]=>string(22) "variant-437-swatch.jpg"
["width"]=>string(4) "1830"
["depth"]=>string(3) "610"
["height"]=>string(3) "740"
["floorToSeat"]=>string(1) "0"
["unit"]=>string(2) "mm"
["weight"]=>float(89)
["volume"]=>float(2.311)
["groupPack"]=>int(1)
["fobkl"]=>string(3) "407"
["br3"]=>string(3) "441"
["br2"]=>string(3) "467"
["br1"]=>string(3) "496"
["rcp"]=>string(3) "515"
["gwm"]=>string(3) "592"
["gem"]=>string(3) "618"
["images"]=>array(1) {
[0]=>string(52) "1148-1578-image_41ddeeef69eb94a8d9ccc1503d099810.jpg"
}
}
[1]=>array(22) {
["id"]=>string(4) "1577"
["uniqCode"]=>string(11) "105132-1577"
["parentId"]=>string(1) "0"
["type"]=>string(6) "Colour"
["title"]=>string(13) "Natural Maple"
["swatch"]=>string(22) "variant-436-swatch.jpg"
["width"]=>string(4) "1830"
["depth"]=>string(3) "610"
["height"]=>string(3) "740"
["floorToSeat"]=>string(1) "0"
["unit"]=>string(2) "mm"
["weight"]=>float(155.06)
["volume"]=>float(20.305)
["groupPack"]=>int(1)
["fobkl"]=>string(3) "407"
["br3"]=>string(3) "441"
["br2"]=>string(3) "467"
["br1"]=>string(3) "496"
["rcp"]=>string(3) "515"
["gwm"]=>string(3) "592"
["gem"]=>string(3) "618"
["images"]=>array(1) {
[0]=>string(52) "1148-1577-image_9c4fc8337e5c106ea6b69863e68f54bb.jpg"
}
}
}
}
答案 0 :(得分:1)
调试器可以帮助查找错误,例如xdebug和netbeans作为前端。
请确认相关的来源行确实是echo strtolower($pData['attribs'][0][0]['type'])
,例如通过使用错误处理程序,如:
function myErrorHandler($errno, $errstr, $errfile, $errline, $errcontext)
{
if ( E_NOTICE===$errno && is_readable($errfile) ) {
$source = file($errfile);
for($i=max(0,$errline-4); $i<$errline+3; $i++ ) {
if ( isset($source[$i]) ) {
if ( $i+1===$errline ) {
echo ' >>> ';
}
echo $source[$i];
}
}
}
return false;
}
$old_error_handler = set_error_handler('myErrorHandler');
答案 1 :(得分:0)
在echo之前的行上执行print_r,因此您确定可以看到函数实际工作的数组。这可能是一个范围问题(即,$ pData是函数中的本地数组,你在该函数之外调用echo)。
答案 2 :(得分:0)
我看不出任何错误 - 唯一的可能是您将0个键中的一个或两个定义为字符串'0',使其成为关联索引(而不是数字)
$pData['attribs']['0']['0']['type'] = 'Colour';
在这种情况下,您还需要将其称为字符串