CakePHP if else以显示数组或第一行(一行)或NULL php回显
我有一个表格,在任何时候都可能没有任何东西可以显示,一行或多行 在我的第一次尝试中,我将变量设置为查找ALL的数组,但是很明显,如果有1行或0行,CakePHP会抛出一个为FOREACH提供的无效参数。我可以先设置数组查找,但是如果有超过1行,它将只显示第一行 有人有什么建议吗 现场控制器中的功能:CakePHP if else以显示数组或第一行(一行)或NULL php回显,php,arrays,cakephp,if-statement,echo,Php,Arrays,Cakephp,If Statement,Echo,我有一个表格,在任何时候都可能没有任何东西可以显示,一行或多行 在我的第一次尝试中,我将变量设置为查找ALL的数组,但是很明显,如果有1行或0行,CakePHP会抛出一个为FOREACH提供的无效参数。我可以先设置数组查找,但是如果有超过1行,它将只显示第一行 有人有什么建议吗 现场控制器中的功能: public function add($id){ //Set Title, Stylesheet, homelogo & layout $this->set('
public function add($id){
//Set Title, Stylesheet, homelogo & layout
$this->set('title_for_layout', 'View Invoices');
$this->set('stylesheet_used', 'homestyle');
$this->set('image_used', 'eBOXLogoHome.png');
$this->layout='home_layout';
//Find all fields where template_id = template_id passed in
//ARRAY: to print foreach loop ONLY WORK >2 Row returned
$templatefields=$this->Field->find('all', array(
'conditions' => array(
'Field.template_id' => $id)));
//Find all fields where template_id = template_id passed in
//FIRST: to print echo variable ONLY WORK =1 Row returned
//$templatefields=$this->Field->find('first', array(
//'conditions' => array(
//'Field.template_id' => $id)));
//Set variables
$this->set('templatefields', $templatefields);
}
传入的$id是字段所属的模板id
字段/add.ctp中的显示功能
<?php
if (is_array($templatefields))
{
foreach ($templatefields as $templatefield)
{
<tr>
<td align='center'><?php echo $templatefields['Field']['name']; ?></td>
<td align='center'><?php echo $templatefields['Field']['description']; ?></td>
<td align='center'><?php echo $templatefields['Field']['default_value']; ?></td>
<td align='center'><?php echo $templatefields['Field']['template_id']; ?></td>
</tr>
}
}
else if (count($templatefields)==1)
{
....print? --> WOULD HAVE TO USE $templatefields where find('first')
....otherwise error=invalid argument supplied for foreach
}
else if (empty($templatefields))
{
....NULL
....OR "There are no fields to display"
}
?>
}
}
else if(计数($templatefields)==1)
{
..打印?-->必须在查找('first')的位置使用$templatefields
..否则错误=为foreach提供的参数无效
}
else if(空($templatefields))
{
无效的
…或“没有要显示的字段”
}
?>
find('all')
返回false
或数组
因此,$templatefields
要么是false
,要么是数组-始终。即使它只是一个结果,它仍然是相同的格式,仍然是一个数组
您的代码(已修改):
find('all'…)语句有什么问题?我不明白。执行find('all')
,如果没有结果,则显示“对不起,这里什么都没有”消息,否则将遍历所有找到的结果(可能只有一个)并输出它们。我不明白为什么一个结果在这里是一个特例。如果你找到(全部)它需要一个数组,那么当你为每个循环&只有一行,它不是数组&它抛出一个“为每个循环提供的参数无效”,。。因为从技术上讲,它找不到“数组”。在您的foreach
中,您仍然在引用$templatefieldS
-这不应该是$templatefield
find('all')
返回一个数组,与找到的记录数无关。(如果没有,则为假)好的,谢谢。foreach循环昨天没有处理1条记录,但是如果它确实像上面那样工作,我可能只是重复检查代码——可能是其他原因引发了错误。谢谢
<?php
if(empty($templatefields)) {
//display "none found" message
} else {
foreach ($templatefields as $templatefield) { ?>
<tr>
<td align='center'><?php echo $templatefields['Field']['name']; ?></td>
<td align='center'><?php echo $templatefields['Field']['description']; ?></td>
<td align='center'><?php echo $templatefields['Field']['default_value']; ?></td>
<td align='center'><?php echo $templatefields['Field']['template_id']; ?></td>
</tr>
<?php }
}