0

現在、チュートリアルに従おうとしていますが、if ステートメントを使用するセクションに到達しました。このセクションでは、フォルダーに保存したダウンロード可能なデータをすべて表示します。

Undefined variable: iしかし、私が抱えている問題は if ステートメントにあります。この 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 = 0;

%演算子はモジュラスと呼ばれ、の残りを返す$i/2ため、式は$iが偶数の場合は true であり、 が不均一な場合は false$iです。

ほとんどの if ステートメントでは==、またはより厳密な===. ほとんどの場合、使用=はエラーであり、ほとんどの IDE はそれについて警告します。

于 2013-02-04T17:17:08.983 に答える
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++ を ($i+1) に置き換えてみてください

% は割り算の残りです。

例: 5%2=1 (5/2=4 残り 1)

于 2013-02-04T17:15:00.060 に答える