カテゴリー別アーカイブ: PHP

PHP breakでループ処理を止める方法2

PHP breakでループ処理を止める方法2

前回の記事で、break の基本的な使い方を紹介しました。今回は、もう一つ break を使ってループを抜ける例を紹介します。

ランキングなど配列の一部だけ出力したいときの例

下の例は、アプリのダウンロード数ランキングを3位まで表にする例です。$lanking という配列の、キーにアプリ名、値にダウンロード数を入れています。

<h2>アプリダウンロード数ランキング</h2>
<table>
<thead>
<tr>
  <th>順位</th>
  <th>アプリ名</th>
  <th>ダウンロード数</th>
</tr>
</thead>
<tbody>
<?php
  $lanking = array(
    'appA' => 300000,
    'appB' => 250000,
    'appC' => 200000,
    'appD' => 150000,
    'appE' => 100000,
    'appF' => 50000,
  );
  $lank = 0;
  foreach($lanking as $app => $dl){
    $lank ++; //$lankの値を+1する
    if($lank == 4){
      break;
    }
    echo <<< HTML
  <tr>
    <td>{$lank}</td>
    <td>{$app}</td>
    <td>{$dl}</td>
  </tr>
HTML;
  }
?>
</tbody>
</table>

今回の配列は連想配列(キーが文字列の配列)なので、何番目の要素か識別するのにキーが使えません。そのため、$lank という変数を作って順位を表しています。$lankは初期値が0で、配列の要素をひとつ処理する度に1づつ増えていきます。 1位から3位まで表示したいので、4位は処理しないように、$lank が 4 のときにループを抜けるように設定しています。

ブラウザで出力すると下の画像のようになります(cssは別指定です)。

実行結果2

参考

PHP breakでループ処理を止める方法1

breakでループ処理を止める方法

先日の記事で、foreach を使って配列を処理する方法を紹介しました。foreach では、配列の要素をすべて処理し終わったら自動的にループ処理から抜けるようになっています。しかし、配列のいくつかの要素のみ処理したい場合や、自動でループを抜けない文を使ったりする場合、処理を終了させるために break という文を使用することがあります。

breakの使い方

break は if の条件分岐と組み合わせて使われることが多いです。例えば、配列の要素を[0]から[4]まで処理したらループを抜けたいときは、下のように書きます。

例:$sample[0]から$sample[4]まで処理する

<?php
  $sample = array('A','B','C','D','E','F','G','H','I');
  foreach($sample as $key => $val){
    if($key == 5){
      break;  //キーが5ならループを抜ける
    }
    echo $val;
  }
?>

実行すると下の画像のようになります。

実行結果1

次回の記事で、もう一つ例を紹介します。

参考

PHP 配列の並べ替えをする関数

PHP 配列の並べ替えをする関数

PHPで配列の要素を並び替える方法を紹介します。アルファベット順に並び替えたり、数値の大きさで並び替えができるようになっています。配列の並べ替えには関数を使いますが、キーを並び替えるか、値を並び替えるか、昇順か降順かなどでいくつもの関数が用意されています。この記事では、そのうちのいくつかを紹介します。

配列の並べ替えをする関数
関数 処理内容 キーと値の関係
asort() 値を昇順に並べ替える 維持する
arsort() 値を降順に並べ替える 維持する
ksort() キーを昇順に並べ替える 維持する
krsort() キーを降順に並べ替える 維持する
sort() 値を昇順に並べ替える 維持しない
rsort() 値を降順に並べ替える 維持しない
shuffle() 値をランダムに並べ替える 維持しない

記述例

下は、配列$lamkingの値を降順に並べ替える例です。

<?php
  $lanking = array(100,200,300);
  rsort($lanking);
  print_r($lanking);
?>

出力すると下の画像のようになります。

出力結果

array文では配列の順番が100→200→300だったのが、rsort() によって300→200→100に並べ替えられていることがわかります。

PHP foreach文で配列をループ処理する方法2

PHP foreach文で配列をループ処理する方法2

前回の記事に引き続き、配列処理のための構文 foreach についてです。今回は、配列のキーと値両方に対して処理を実行したい場合の書き方を紹介します。

foreach文の書き方2

キーと値両方を処理する foreach文の書き方です。配列のひとつひとつの値が as の後の変数に格納されるのは値のみ処理するときと同じですが、この書き方では as の後に変数が二つあります。=> という記号の前の変数にキーが、後の変数に値が格納されます

foreach( 配列変数 as キーを入れる変数 => 値を入れる変数 ){
  配列に実行したい処理
}

記述例

以下は、配列を使ってCSSプロパティとその効果を表示する例です。

PHP

<ul>
<?php
  $property = array(
    'width' => '横幅',
    'color' => '文字色',
    'padding' => '内余白',
    'border' => '枠線',
  );

  foreach($property as $key => $val){
    echo '<li>',$key,'は',$val,'の指定をするプロパティです。</li>';
  }
?>
</ul>

これを出力すると、ブラウザの表示は下の画像のようになります。

実行結果

$key にはプロパティ名が、$val にはプロパティの説明が入るので、プロパティの説明がリスト表示されます。なお、2つの変数名は、キーが入るので key 、値が入るので val (value)程度の意味で付けています。これ以外の任意の名前でも大丈夫です。

参考サイト

PHP foreach文で配列をループ処理する方法1

PHP foreach文で配列をループ処理する方法1

foreach文は、PHPで配列を処理するための構文です。配列に格納されている要素の数だけ処理をします。foreach文には、配列の値だけを処理する構文と、キーと値を処理する構文がありますが、今回の記事では値だけ処理する方を紹介します。

foreach文の書き方1

配列の値を処理するforeach文の書き方です。配列のひとつひとつの値が as の後の変数に格納されるので、その変数を使って値の処理を行います。処理は、配列の要素の数だけループします。

foreach( 配列変数 as 変数 ){
  配列に実行したい処理
}

記述例

以下は、配列を使ってCSSプロパティを表示する例です。

PHP

<p>CSSのプロパティには以下のようなものがあります。</p>
<ul>
<?php
  $property = array('width','color','padding','border');
  foreach($property as $val){
    echo '<li>',$val,'</li>';
  }
?>
</ul>

出力結果

ブラウザで出力すると下の画像のようになります。

出力結果

配列 $property の要素が4つあったので、処理が4回繰り返され、<li>要素が4つ出来ました。

参考サイト

PHP 配列の使い方3

PHP 配列の使い方3

前回の記事で、配列の中身を出力する方法を紹介しました。今回は簡単な使用例です。

配列の例

前回も使った、果物の価格で作った配列です。今回はこの配列を使い、果物の名前と価格が表示されたセレクトボックスを出力する例を紹介します。

$fruit = array(
  'apple' => 150,
  'banana' => 200,
  'melon' => 1000,
  'orange' => 100,
);

使用例

配列を使用して下のようなセレクトボックスを作った例です。

※これはPHPで出力したものではありません。

PHP

<select name="fruit">
<?php
//配列$fruitの作成
  $fruit = array(
    'apple' => 150,
    'banana' => 200,
    'melon' => 1000,
    'orange' => 100,
  );
//配列$fruitの各要素を処理して<option>要素を出力する
  foreach($fruit as $fruit_name => $price){
    echo <<< HTML //次に「HTML」が出てくるまでそのまま出力するヒアドキュメント
<option value="{$fruit_name}">{$fruit_name}: &yen;{$price}</option>

HTML; //ヒアドキュメントここまで
  }
?>
</select>

foreach文で、配列 $furuit のキーを $fruit_name に、内容を $price に代入して、一つ一つの要素に繰り返し同じ処理( { } 内の処理。ここでは<option>要素の出力)を実行しています。foreach文については次回の記事で紹介します。

出力されるHTML

<select name="fruit">
  <option value="apple">apple: &yen;150</option>
  <option value="banana">banana: &yen;200</option>
  <option value="melon">melon: &yen;1000</option>
  <option value="orange">orange: &yen;100</option>
</select>

このように、配列を使用してセレクトボックスなどを出力すると、後で要素を追加したり内容を変更するときに、配列を変更するだけでいいので修正が楽になります。項目が多ければ多いほど、HTMLをそのまま書く場合と比べて記述量も少なくて済みます。

PHP 配列の使い方2

PHP 配列の使い方2

前回の記事で、配列の作り方を紹介しました。今回は配列の中身を出力する方法と、簡単な使用例を紹介します。

配列の例

前回の記事で書いた果物の価格で配列を作った例です。今回もこの例を使って解説します。

$fruit = array(
  'apple' => 150,
  'banana' => 200,
  'melon' => 1000,
  'orange' => 100,
);

配列の出力

配列は、基本的に通常の変数と同じように展開することができます。特定のキーの内容だけ取り出したい場合は、対応するキーを変数名の後の [ ] 内に書きます。たとえば冒頭の配列で、 ‘apple’ の中身だけ出力したいときは次のように書きます。

echo $fruit['apple'];

下のように、キーを変数にすることもできます。

$buy = 'apple';
echo $fruit[$buy];

PHP 配列の使い方1

PHP 配列の使い方1

今回から3回に渡って、PHPで配列を使う方法を紹介します。

配列(配列変数)とは

配列は、通常の変数と同じく文字列や数値を格納しておける箱のようなものですが、複数の値をひとまとめにしておける変数です。通常の変数では扱いづらい複数のデータを格納したいときに使います。また、処理を複数の値に繰り返し行いたいときなどによく出てきます。

書き方1

$ 配列変数名 [ キー1 ] = 格納する内容1 ;
$ 配列変数名 [ キー2 ] = 格納する内容2 ;

配列は、1つの配列変数名に複数の値が入るので、[ ] (角かっこ)の中にそれぞれの値が識別できるように「キー」を入れます。キーは整数や文字列が使えます。

記述例

果物の価格を配列にして格納する例です。

$fruit['apple'] = 150 ;
$fruit['banana'] = 200 ;
$fruit['melon'] = 1000 ;
$fruit['orange'] = 100 ;

このように、複数の情報を fruit という一つの名前でまとめて管理することができます。

書き方2

書き方1ではひとつひとつの数値を別々に格納しましたが、1文にまとめることもできます。そのときに使うのが array (意味:整列させる、配列する)です。arrayは新しく配列を作るものなので、すでにある配列に変更を加えるときは書き方1で書いてください

$ 配列変数名 = array(
  キー1 => 格納する内容1,
  キー2 => 格納する内容2,
);

=> という記号を使ってキーと内容を連結し、カンマで区切ります。 最後のカンマは省略可能です。キーを省略して内容だけ書いた場合は、先に書いたものから順に、0 からの整数でキーが割り当てられます

記述例

書き方1の記述例と同じ配列を、arrayで作る例です。

$fruit = array(
  'apple' => 150,
  'banana' => 200,
  'melon' => 1000,
  'orange' => 100,
);

このように、シンプルに書くことができます。

次回記事では、配列の中身を出力する方法を紹介します。

PHP フォーム入力内容の取得とif文を使ったプログラムの例

PHP フォーム入力内容の取得とif文を使ったプログラムの例

前回の記事でフォーム入力内容の取得について、前々回の記事でif文を紹介しました。今回の記事では、それを組み合わせたプログラムの例を紹介します。

概要

買い物プログラム

フォームに購入金額を入れると、金額が足りれば(200円以上なら)「お買い上げありがとうございます」、おつりがあれば「○円のおつりです」と表示し、足りなければ「金額が足りません」と表示するプログラムです。

PHP

<form action="form_if.php" method="post">
  <label for="okane">支払金額: </label>
  <input type="text" name="okane"> 円
  <input type="submit" name="send" value="送信">
</form>
<div id="inner">
  <?php
    if(isset($_POST["okane"])){ //$_POST["okane"]が空でなければ実行する
      $kakaku = 200;
      if($_POST["okane"] >= $kakaku){
        echo '<p>お買い上げありがとうございます</p>';
      }else{
        echo '<p>金額が足りません</p>';
      }
      $oturi = $_POST["okane"] - $kakaku;
      if($oturi > 0){
        echo "<p>{$oturi}円のおつりです</p>";
      }
    }
  ?>
</div>

解説

if(isset($_POST["okane"]))

このプログラムでは、フォームと処理部分が同じファイルになっているので、最初にブラウザに表示したときにはフォーム内容が無く、処理ができないためエラーになります。そこで、isset()という関数で、$_POST['okane']に何か入っているか確認し、入っていればif文の中身の処理を実行し、入っていなければ何もしないことでエラーを避けています。isset()は、変数が空でないか(存在するか)確認する関数です。

if($_POST["okane"] >= $kakaku)

$_POST["okane"] でフォームに入力した内容を取得し、それが $kakaku(ここでは200)以上かどうか判別します。もし $kakaku 以上だったら「お買い上げありがとうございます」、以下だったら「金額が足りません」と出力します。

PHP フォームの入力内容を取得する方法

PHP フォームの入力内容を取得する方法

フォームの入力内容を取得する

PHP でフォームに入力された内容を取得するには、HTML で form 要素の method 属性を post にしたうえで、PHP で $_POST というあらかじめ定義されている変数を使います。

記述例

下は、テキスト入力フォームに入力された内容を取得する例です。まずは HTML でフォームを作ります。

HTML

<form action="sample.php" method="post">
  <p>名前:
    <input type="text" name="namae" value="氏名">
    <input type="submit" value="送信">
  </p>
</form>

HTMLでは、 form 要素の action 属性の値には、フォームの内容を処理するPHPファイルのパスを書きます。 method 属性の値は post にします。

method 属性では、ブラウザがフォームの内容を送信するときの要求の種類を指定しますが、ここを POST メソッドという要求にすることで、PHP の $_POST という変数で内容を受け取ることができます。method 属性の値には GET というのもあり、こちらがデフォルトになっています。GETメソッドの場合、$_GET という変数に格納されます。 GET と POST の違いについては記事の最後に紹介している参考サイトをご覧ください。

また、$_POST で入力内容を取得するとき、そのフォームの name 属性の値を使うので、必ず指定しておきます。上の例では “namae” にしてあります。次はPHPの記述です。

PHP

<?php
  echo $_POST['namae'];
?>

$_POST['name'] の部分で name 属性の値が namae のフォームの入力内容を連想配列として格納しています。連想配列は、[ ] 内の添字(キー)を文字列にすることができる配列で、キーの意味から配列の中身を連想しやすいのがメリットです。通常の配列は、$sample[0] という感じで [ ] 内が数字になっています。

実行するときは、フォームに入力して送信ボタンを押します。「送信」ボタンを押すとフォームの内容がPHPに渡される仕組みです

参考サイト