【发布时间】:2017-05-05 05:02:32
【问题描述】:
我正在尝试在foreach 循环中使用unset stdClass 对象。这是我的代码:
<?php
if (isset($summaryResult)) {
foreach($summaryResult as $rows) { ?>
<tr>
<td><?php echo $rows->st_date;?></td>
<td>
<?php
if(($rows->st_time_09 == '')&&($rows->st_time_11 == '')&&($rows->st_time_13 == '')){echo $rows->st_time_07;}
elseif(($rows->st_time_07 == '')&&($rows->st_time_11 == '')&&($rows->st_time_13 == '')){echo $rows->st_time_09;}
elseif(($rows->st_time_07 == '')&&($rows->st_time_09 == '')&&($rows->st_time_13 == '')){echo $rows->st_time_11;}
elseif(($rows->st_time_07 == '')&&($rows->st_time_09 == '')&&($rows->st_time_11 == '')){echo $rows->st_time_13;}
else{}
?>
</td>
<td>
<?php
if(($rows->st_chlorine_09 == '')&&($rows->st_chlorine_11 == '')&&($rows->st_chlorine_13 == '')){echo $rows->st_chlorine_07;}
elseif(($rows->st_chlorine_07 == '')&&($rows->st_chlorine_11 == '')&&($rows->st_chlorine_13 == '')){echo $rows->st_chlorine_09;}
elseif(($rows->st_chlorine_07 == '')&&($rows->st_chlorine_09 == '')&&($rows->st_chlorine_13 == '')){echo $rows->st_chlorine_11;}
elseif(($rows->st_chlorine_07 == '')&&($rows->st_chlorine_09 == '')&&($rows->st_chlorine_11 == '')){echo $rows->st_chlorine_13;}
else{}
?>
</td>
<td>
<?php
if(($rows->st_time_15 == '')&&($rows->st_time_17 == '')&&($rows->st_time_19 == '')){echo $rows->st_time_21;}
elseif(($rows->st_time_21 == '')&&($rows->st_time_17 == '')&&($rows->st_time_19 == '')){echo $rows->st_time_15;}
elseif(($rows->st_time_21 == '')&&($rows->st_time_15 == '')&&($rows->st_time_19 == '')){echo $rows->st_time_17;}
elseif(($rows->st_time_21 == '')&&($rows->st_time_15 == '')&&($rows->st_time_17 == '')){echo $rows->st_time_19;}
else{}
?>
</td>
<td>
<?php
if(($rows->st_chlorine_21 == '')&&($rows->st_chlorine_17 == '')&&($rows->st_chlorine_19 == '')){echo $rows->st_chlorine_15;}
elseif(($rows->st_chlorine_21 == '')&&($rows->st_chlorine_15 == '')&&($rows->st_chlorine_19 == '')){echo $rows->st_chlorine_17;}
elseif(($rows->st_chlorine_21 == '')&&($rows->st_chlorine_15 == '')&&($rows->st_chlorine_17 == '')){echo $rows->st_chlorine_19;}
elseif(($rows->st_chlorine_15 == '')&&($rows->st_chlorine_17 == '')&&($rows->st_chlorine_19 == '')){echo $rows->st_chlorine_21;}
else{}
?>
</td>
<td>
<?php
if(($rows->st_time_23 == '')&&($rows->st_time_01 == '')&&($rows->st_time_03 == '')){echo $rows->st_time_05;}
elseif(($rows->st_time_05 == '')&&($rows->st_time_01 == '')&&($rows->st_time_03 == '')){echo $rows->st_time_23;}
elseif(($rows->st_time_05 == '')&&($rows->st_time_23 == '')&&($rows->st_time_03 == '')){echo $rows->st_time_01;}
elseif(($rows->st_time_05 == '')&&($rows->st_time_23 == '')&&($rows->st_time_01 == '')){echo $rows->st_time_03;}
else{}
?>
</td>
<td>
<?php
if(($rows->st_chlorine05 == '')&&($rows->st_chlorine01 == '')&&($rows->st_chlorine03 == '')){echo $rows->st_chlorine23;}
elseif(($rows->st_chlorine05 == '')&&($rows->st_chlorine23 == '')&&($rows->st_chlorine03 == '')){echo $rows->st_chlorine01;}
elseif(($rows->st_chlorine05 == '')&&($rows->st_chlorine23 == '')&&($rows->st_chlorine01 == '')){echo $rows->st_chlorine03;}
elseif(($rows->st_chlorine23 == '')&&($rows->st_chlorine01 == '')&&($rows->st_chlorine03 == '')){echo $rows->st_chlorine05;}
else{}
?>
</td>
</tr>
<?php
}
// unset($summaryResult); <== why this unset doesn't work ?
} else { ?>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<?php
} ?>
上面的代码是显示如下截图的结果:
我希望 unset 每个已打印的对象将数据包装成 4 行(检查下面的屏幕截图)。我已将 unset($summaryResult) 放在“foreach”循环的末尾,但它不起作用。
任何帮助都将不胜感激。
【问题讨论】:
-
你未设置的不在foreach里面
-
如果在foreach内部没有设置,运行一组数组后会停止。据我了解,@metaphor 尽量不要打印空白单元格
-
你不能在这里“取消设置”一些东西。您需要重新构建此文件的整个结构,以获得所需的表格数据显示。
-
@weirdo 尝试不打印空白单元格 怎么办?我试过使用
array_diff和array_filter。顺便说一句,这些字段是String。是否可以根据上述数据过滤掉空字符串? -
处理它.. 但这很难,因为您的数据可能在您的数组中随机出现。
标签: php arrays codeigniter loops foreach