月別アーカイブ: 2013年2月

3.PHP入門 判定

ここではPHP、判定を解説していきます。

php

if文の判定

<?php

    $foo = 1;
    $bar = 2;

    if ($foo < $bar) {
        echo "true";
    }
    else if ($foo > $bar) {
        echo "false";
    }
    else {
        echo "false";
    }

解説

この例では変数$fooより$barの値のほうが大きいので最初のifブロックが実行されtrueと出力されます。

もしも$fooに2が$barに1が代入されていたら2番目のelse ifブロックが実行されfalseと出力されます。

もしも$fooに1が$barに1が代入されていたら3番目のelseブロックが実行されfalseと出力されます。

比較演算子

<?php

    $foo = 1;
    $bar = 1;

    if ($foo == $bar) {
        echo "true";
    }
    if ($foo >= $bar) {
        echo "true";
    }
    if ($foo <= $bar) {
        echo "true";
    }

    $foo = 1;
    $bar = 2;

    if ($foo != $bar) {
        echo "true";
    }
    if (!($foo == $bar)) {
        echo "true";
    }

解説

if ($foo == $bar) {} (6行目)
「==」演算子、$fooと$barが等しい場合trueと表示されます。

if ($foo >= $bar) {} (9行目)
「>=」演算子、$fooが$bar以上の場合trueと表示されます。

if ($foo <= $bar) {} (12行目)
「<=」演算子、$barが$foo以上の場合trueと表示されます。 if ($foo != $bar) {} (19行目)
「!=」演算子、$fooと$barが等しくない場合trueと表示されます。

if (!($foo == $bar)) {} (22行目)
「!()」演算子、こちらも$fooと$barが等しくない場合trueと表示されます。

論理演算子

<?php

    $foo = 'foo';
    $bar = 2;

    if ($foo == 'foo' & $bar >= 1) {
        echo "true";
    }
    if ($foo == 'foo' && $bar <= 3) {
        echo "true";
    }
    if ($foo == 'bar' | $bar == 2) {
        echo "true";
    }
    if ($foo == 'bar' || $bar == 2) {
        echo "true";
    }

解説

if ($foo == ‘foo’ & $bar >= 1) {} (6行目)
「&」演算子、左の式と右の式が正しいならこのブロックの処理が実行されます。

if ($foo == ‘foo’ && $bar <= 3) {} (9行目)
「&&」演算子、左の式と右の式が正しいならこのブロックの処理が実行されます。
この場合左の式が正しくない場合右の式は実行されないので実際の開発ではパフォーマンス面でこちらが多く使用されます。

if ($foo == ‘bar’ | $bar == 2) {} (12行目)
「|」演算子、左の式か右の式がどちらか片方正しい場合このブロックの処理が実行されます。

if ($foo == ‘bar’ || $bar == 2) {} (15行目)
「||」演算子、左の式か右の式がどちらか片方正しい場合このブロックの処理が実行されます。
この場合左の式が正しい場合右の式は実行されないので実際の開発ではパフォーマンス面でこちらが多く使用されます。

関数を使った判定

<?php

    $foo = 1;
    $bar = 0;
    $baz = null;
    $hoge = "";

    if (isset($foo)) {
        echo "true";
    }
    if (isset($bar)) {
        echo "true";
    }
    if (isset($hoge)) {
        echo "true";
    }
    if (empty($bar)) {
        echo "true";
    }
    if (empty($baz)) {
        echo "true";
    }
    if (empty($hoge)) {
        echo "true";
    }

解説

「isset()」関数
issetは変数に値がセットされているかの判定に使います。
例のように「null」はfalseになりますが、「0」、「””」はtrueになります。

「empty()」関数
emptyは変数が空かの判定に使います。
例のように「null」、「0」、「””」がfalseになりますが「1」はtrueになります。

数値の「0」や空白文字「””」が関数によってtrueとfalseに変わるので用途に分けて使用してください。
又、配列かの判定をする「is_array()」関数、nullかの判定をする「is_null()」関数もあります。

2.PHP入門 数値の操作

ここではPHP、数値の操作を解説していきます。

php

算術演算子で計算

<?php

    echo 1 + 1;   // 2
    echo 1 - 1;   // 0
    echo 2 * 2;   // 4
    echo 2 / 1;   // 2
    echo 11 % 3;  // 2

解説

上から足し算、引き算、掛け算、割り算、割り算の余りを計算しています。
数値の場合は文字列とは違いクォーテーションで囲む必要はありません。

算術演算子で優先計算

<?php

    echo 1 + 2 * 3;    // 7
    echo (1 + 2) * 3;  // 9

解説

3行目のように計算すると数学と同じで2 x 3が先に計算され答えは7となります。
4行目のように括弧「()」を使用すれば括弧内の演算が先に行われ答えは9となります。

変数を使用した計算

<?php

    $var = 2;
    $var += 1;
    echo $var;  // 3
    $var -= 1;
    echo $var;  // 2
    $var *= 2;
    echo $var;  // 4
    $var /= 2;
    echo $var;  // 2

解説

このように「演算子=」とすると計算と代入が同時に行われます。

インクリメントとデクリメント

<?php

    $i = 0;
    $i++;
    echo $i;    // 1
    $i--;
    echo $i;    // 0
    echo $i++;  // echo出力後に「+1」されるため0と出力される
    echo $i;    // 1
    echo --$i;  // echo出力前に「-1」されるため0と出力される

解説

インクリメントは変数の後ろに「++」を記述することで+1の計算が行われます。
デクリメントは変数の後ろに「–」を記述することで-1の計算が行われます。
又変数の前に「++」「–」を記述すると計算や「echo」出力より先に+1、-1の計算が行われます。

1.PHP入門 文字列の操作

ここではPHPの基本文字列の操作を解説していきます。

php

文字列の記述方法

<?php

    echo 'Hello World<br />';
    echo "Hello World<br />";
    print 'Hello World<br />';
    print "Hello World<br />";

解説

このように「”」シングルクォーテーション「””」ダブルクォーテーションで囲んで出力させます。

変数を利用した出力

<?php

    $var = "Hello World";
    echo $var . "<br />";
    echo 'test : $var <br />';
    echo "test : $var <br />";

出力結果

Hello World<br />
test : $var <br />
test : Hello World <br />

解説

3行目 変数の代入
変数の代入、$varという変数にHello Worldを文字列として格納しています。

4行目 変数の展開
$varの中身が展開されHello Worldと出力されます。
変数と文字列をつなげて表示させたい場合は変数と文字列を「.」でつなぎます。

5行目の出力結果
シングルクォーテーション「”」で囲んだ変数は展開されず$varと変数名が表示されてしまいます。

6行目の出力結果
ダブルクォーテーション「””」で囲んだ変数はきちんと展開されHello Worldと出力されます。

まとめ

<?php

    $name = "田中";
    $age = 20;
    echo "名前:{$name} 年齢:{$age}";

このように基本的に文字列の出力にはechoを利用し、ダブルクォーテーションを利用し、変数の展開には{}で記載し出力をさせるのが実際の開発で使われる一般的な形式で、PHPの規約にのとった書き方です。

Smarty section

ここではSmartyのsection関数を解説していきます。

smarty

基本構文

{section name=i loop=5}
    {$smarty.section.i.index}、
{/section}

出力結果は「0、 1、 2、 3、 4、」 になります。
name=i
sectionに名前をつけて使用します。
loop=5
ループする回数を指定します。

初期値を設定する

{section name=i start=1 loop=5}
    {$smarty.section.i.index}、
{/section}

出力結果は「1、 2、 3、 4、 」 になります。

ステップを設定する

{section name=i start=1 loop=10 step=2}
    {$smarty.section.i.index}、
{/section}

出力結果は「1、 3、 5、 7、 9、 」 になります。

ステップに逆順を設定する

{section name=i loop=10 step=-2}
    {$smarty.section.i.index}、
{/section}

出力結果は「9、 7、 5、 3、 1、 」 になります。

配列を渡しループさせる

php

<?php
    $data = array(1,2,3,4,5,6,7,8,9);
    $smarty->assign('data', $data);

tpl

{section name=i loop=$data}
    {$data[i]}、
{/section}

出力結果は「1、 2、 3、 4、 5、 6、 7、 8、 9、 」になります。

連想配列を渡しループさせる

php

<?php
    $data = array(
        array(
            name => 'Tanaka',
            tel => '000-0000-0000'
        ),   
        array(
            name => 'Yamada',
            tel => '111-1111-1111'
        ),
    );
    $smarty->assign('data', $data);

tpl

{section name=i loop=$data}
    <p>
        {$data[i].name}<br />
        {$data[i].tel}<br />
    </p>
{/section}

出力結果

<p>
    Tanaka<br />
    000-0000-0000<br />
</p>
<p>
    Yamada<br />
    111-1111-1111<br />
</p>

$data[i][‘name’]とはアクセスできずエラーになってしまうので注意してください。

CakePHP2.x Session

ここではCakePHP2.xでのSessionについてまとめています。

cakephp

解説

Sessionの書き込み

$this->Session->write('key', 'bar');

引数は左からSessionの名前、値で書き込みます。

Sessionの読み込み

$this->Session->read('key');

Sessionの名前で値を出力します。

Session判定

$this->Session->check('key');

Sessionの名前に値がセットされているかの判定をします。

Session削除

$this->Session->delete('key');

Sessionの名前で指定して削除します。

Sessionを全て削除

$this->Session->destroy();

保存されているSessionを全て削除します。

テストソース

<?php
    $i = 0;
    if ($this->Session->check('count')) {
        $i = $this->Session->read('count');
        $this->Session->write('count', ++$i);

    }
    else {
        $this->Session->write('count', ++$i);
    }
    // Viewなどで
    echo $this->Session->read('count');