php - 如果带有 Foreach 的语句没有遍历 foreach
问题描述
我的代码有问题 - 对 PHP 来说相当新,所以任何指针都将不胜感激。
我有以下代码
foreach(findCustomAlerts($customerid) as $key=>$value){
echo "ID : ".$rifdid = $value['Catid']."<br>";
echo "Visits required per day : ".$visitsneeded= $value['Visits required']."<br>";
}
foreach(getTodaysVisits($device_id) as $rfid){
foreach($rfid as $key=> $read){
if($key ==$rifdid && $read < $visitsneeded) {
echo"<br>". $key." has not visited enough";
}
}
}
但它没有遍历 foreach - 它只是拾取第一个值然后停止:
ID: 1005
Visits required per day : 3
ID : 2089
Visits required per day : 5
2089 has not visited enough
这是 foreach 应该迭代的数组:
Array
(
[rfid_id] => Array
(
[2089] => 1
[1005] => 3
)
)
我尝试将变量放入以计算迭代次数,如下所示:
$i = 0;
foreach(getTodaysVisits($device_id) as $rfid){
foreach($rfid as $key[$i]=> $read){
if($key[$i] ==$rifdid && $read < $visitsneeded) {
echo"<br>". $key[$i]." has not visited enough";
$i++;
}
}
}
但它给了我以下错误:
Warning: Cannot use a scalar value as an array
Notice: Trying to access array offset on value of type int in
所以不确定最好的行动方案是什么,非常感谢任何建议。
解决方案
这看起来像您在第一个 for-each 循环中收到的结构findCustomAlerts($customerid)
不是您所期望的,但是警告没有给出行号,所以我可能是错的。
在您的代码中,您有一个$key
未使用的,然后$value
您将其视为一个数组。
您收到的警告消息告诉我们,您不能将标量(或单数)值类型用作数组。然后我们会收到一条通知,告诉我们当我们尝试将它用作数组时,偏移量'Catid'
或'Visits required'
不可用,可能是由于相同的原因。$value
根据您显示的数组示例(1,3),我怀疑更可能是整数类型。
var_dump()
在函数的输出上运行 a findCustomAlerts
,我想你会更好地理解这个问题。
推荐阅读
- c# - 如何在没有偏移的文本文件中存储日期时间 +05:30
- python - 为什么opencv中resize的插值比PIL差?
- python - 当函数使用 lambda 参数时如何使用模拟
- php - Laravel Lumen 5.7,调试栏抛出调用成员函数监听 null
- regex - 在正则表达式中将单词添加到字符类
- python - 如果列元素是一个集合,如何从熊猫数据框列中获取每个值的计数?
- angular - 在客户端计算机上存储文件的最佳方式
- html - 使锚标记中的特定内容不重定向但可点击以用于 Javascript
- java - 检索与终端中显示的相同的 mongo 文档
- sql-server - SQL Azure 数据库连接问题