0

我目前正在尝试学习教程,并且已经到达使用 if 语句的部分,该语句将向我显示我存储在文件夹中的所有可能的可下载数据。

但是我遇到的问题是 if 语句,它一直告诉我Undefined variable: i在这个 if 语句中有一个 ..

<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 语句中应该是 =、== 或 ===,但出于某种原因,在本教程中他使用了 % ? 如果您还可以解释为什么使用它,我将不胜感激。

谢谢

4

3 回答 3

0

您需要$i使用一些值进行初始化,例如,$i = 10;或者$i = 0;但似乎$i是先前操作的结果,请检查未定义的原因。

% 是模数(除法的其余部分)。更多信息:http ://www.php.net/manual/en/language.operators.arithmetic.php

于 2013-02-04T17:14:53.977 回答
0

尝试用 ($i+1) 替换 $i++

% 是除法的其余部分。

例如:5%2=1(5/2=4,其余为 1)

于 2013-02-04T17:15:00.060 回答
0

好吧,$i真的没有定义,所以你得到了那个消息。你可能忘了设置它$i = 0;

%运算符称为模数并返回 的余数$i/2,因此您的表达式在偶数时为真,在$i不偶数时为假$i

在大多数 if 语句中,您只使用==或更严格的===. 使用=通常是一个错误,大多数 IDE 都会警告您。

于 2013-02-04T17:17:08.983 回答