【发布时间】:2020-02-24 15:53:22
【问题描述】:
我正在尝试从 PHP 中的各种来源组装array 的对象(我是该语言的新手)。问题是我无法将数据存储在我正在尝试编写的foreach 循环中的$bandwidthData array 中。
private function _getData($startDay, $totalDays)
{
$devices = ubntDevices::getDevices();
$data = [];
$bandwidthData = [];
$count = 0;
foreach ($devices as $device) {
$bandwidthData[$count]['device'] = $device;
$bandwidthData[$count]['bandwidth'] = new ubntModel($device->file);
$bandwidthData[$count]['bandwidth']->getMonthData();
$bandwidthData[$count]['tree'] = new graphTree($device->hostid);
$bandwidthData[$count]['graphid'] = ubntGraph::getGraphByHostId($device->hostid);
$bandwidthData[$count]['hostname'] = $device->host_name;
$count++;
}
return $bandwidthData;
}
如果我从foreach 循环中返回,我会得到正确的输出(但显然只针对第一个设备)。我已经测试了所有其他 function 来源,它们似乎返回了正确的数据。知道我做错了什么吗?提前谢谢你。
【问题讨论】:
-
您是否启用了 PHP 错误?
new关键字可能返回一个 false 对象,从而导致“在布尔值上执行对象某事或其他”,并导致一个空数组。 -
这是我使用 PHP 最大的挫折,我似乎无法轻松调试它。有没有办法使用 VS Code 更轻松地查看错误?
-
不确定是否使用 VS Code,但 xdebug 可用于逐步调试 :) 一个真实的发送 tbh
-
打开终端并输入
tail -f /apth/to/php/error_log,您的错误将实时滚动过去 -
尝试在foreach块中从上到下逐渐插入
if($count ==1) break;。并检查你的回报。