【发布时间】:2014-12-19 02:02:46
【问题描述】:
我在一个函数中有一个 for each 循环,我也传递了一个办公区域 (101,102),它应该循环遍历数组以获取匹配 OfficeRegion 的 OLevel (Red,Amber,Yellow) 中的值并返回一个值.
我遇到的问题是只有数组中的第一行返回一个值并且它总是返回“#red#red”,我怎样才能阻止它返回 2 个值并使其循环遍历整个数组?
数组:
array(115) {
[0]=> object(stdClass)#93 (2) { ["OfficeRegion"]=> string(3) "101" ["OLevel"]=> string(1) "R" }
[1]=> object(stdClass)#94 (2) { ["OfficeRegion"]=> string(3) "102" ["OLevel"]=> string(1) "R" }
[2]=> object(stdClass)#95 (2) { ["OfficeRegion"]=> string(3) "103" ["OLevel"]=> string(1) "R" }
[3]=> object(stdClass)#96 (2) { ["OfficeRegion"]=> string(3) "201" ["OLevel"]=> string(1) "R" }
[4]=> object(stdClass)#97 (2) { ["OfficeRegion"]=> string(3) "202" ["OLevel"]=> string(1) "R" }
[5]=> object(stdClass)#98 (2) { ["OfficeRegion"]=> string(3) "301" ["OLevel"]=> string(1) "R" }
[6]=> object(stdClass)#99 (2) { ["OfficeRegion"]=> string(3) "302" ["OLevel"]=> string(1) "R" }
[7]=> object(stdClass)#100 (2) { ["OfficeRegion"]=> string(3) "401" ["OLevel"]=> string(1) "R" }
[8]=> object(stdClass)#101 (2) { ["OfficeRegion"]=> string(3) "403" ["OLevel"]=> string(1) "R" }
}
每个人:
foreach($sqlarray as $index => $columns) {
foreach($columns as $key => $value) {
if ($key == 'OfficeRegion' && $value == $OfficeRegion) {
if($columns->OLevel == "R") {
return '#red';
} elseif ($columns->OLevel == "O") {
return '#amber';
} elseif ($columns->OLevel == "Y") {
return '#yellow';
} else {
return '#green';
}
} elseif ($key == 'OfficeRegion' && $value != $OfficeRegion) {
return "#green";
}
}
}
欢迎提出任何建议!谢谢
【问题讨论】:
-
首先,您不需要
foreach。你是如何调用函数的? -
真的吗?像这样调用函数:GenerateKML::GetColour('101')
-
为什么是
foreach,为什么是嵌套循环?您所做的就是在外部数组中找到具有OfficeRegion键/属性的第一个元素,然后返回。您没有处理整个数组 -
1. 获取结果集。 2. 循环遍历结果集(将结果显示到屏幕上)。 3. 通过传入结果集的当前子数组来调用
GetColour。 4.修改GetColour开启OfficeRegion -> OLevel的内容
标签: php arrays laravel foreach