我目前正在尝试关注tutorial并且我已经到达了使用if语句的部分,该语句将向我显示我存储在文件夹中的所有可下载数据..
但我遇到的问题是if语句,它一直告诉我在这个if语句中有Undefined variable: i
..
<p>Welcome <?php print $this->Session->read('Auth.User.name');
echo ' ';
echo $this->Html->link('Logout', array('controller' => 'Users', 'action' => 'logout'));?> </p>
<dt> <?php if ($i % 2 == 0) echo $class; ?> <?php __('Download'); ?></dt>
<dd> <?php if ($i++ % 2 == 0) echo $class; ?>
<?php echo $this->Html->link(__('Download', true), array('action' => 'download', $upload['Upload']['uploadID'])); ?>
</dd>
以下是控制器中的下载功能:
function download($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid id for upload', true));
$this->redirect(array('action' => 'view'));
}
$this->Upload->bindModel(array('hasOne' => array('UploadsUser')));
$upload = $this->Upload->find('first', array(
'conditions' => array(
'Upload.uploadID' => $id,
'OR' => array(),
)
));
if (!$upload)
{
$this->Session->setFlash(__('Invalid id for upload', true));
$this->redirect(array('action' => 'view'));
}
$this->view = 'media';
$filename = $upload['Upload']['fileName'];
$this->set(array(
'id' => $upload['Upload']['uploadID'],
'name' => substr($filename, 0, strrpos($filename, '.')),
'extension' => substr(strrchr($filename, '.'), 1),
'path' => APP . 'uploads' . DS,
'download' => true,
));
}
我也知道在if语句中应该是=,==或===,但是由于某种原因,在本教程中他使用%?如果你也可以解释为什么使用它,我将不胜感激。
由于
答案 0 :(得分:0)
您需要使用某个值初始化$i
,例如$i = 10;
或$i = 0;
但似乎$i
是上一个操作的结果,请检查为什么没有定义
%是模数(除法的其余部分)。更多信息:http://www.php.net/manual/en/language.operators.arithmetic.php
答案 1 :(得分:0)
尝试用($ i + 1)替换$ i ++
%是其他部门。
Ex:5%2 = 1(5/2 = 4,其余为1)
答案 2 :(得分:0)
嗯,$i
确实没有定义,所以你得到了那条消息。您可能忘记将其设置为$i = 0;
%
运算符名为modulus并返回$i/2
的余数,因此当$i
为偶数时表达式为true,而$i
为==
时表达式为false不均匀。
在大多数if语句中,您只使用===
或更严格的=
。使用{{1}}通常是一个错误,大多数IDE会警告你。