2014年9月30日火曜日

PHPmemo_day7

PHPの基本に関するメモ。参考にしているのはPHPによるWebアプリケーションスーパーサンプル第2版の第7章(配列)です。

  • array関数で配列を作成できる。中身は可変長引数であり、先頭から順に参照できる。参照する際にはforeachを使う方法がある。
  • $v = array("a", "b", "c");
    foreach($v as $elem){
     echo $elem;
    }
  • array関数で単に値のみの配列とした場合、添字は0から始まる。
  • array関数はmapのように扱うこともできる。つまり、次のような配列を作り、参照することができる。インデックス(mapだとキー)については数字でも文字列でも可。
    $v = array("first" => "a", "second" => "b", "third" => "c");
    echo $v["second"]; // "b"と表示される
  • 配列の一括表示にはprint_r関数が使える。
  • インデックスは一部だけ指定できる。途中に数字でインデックスを指定すると、その後でインデックスを省略したものについては指定した数字に続く数字がインデックスとして指定される。
  • count関数は配列の要素数をカウントできる。
  • array_count_values関数は配列の要素の出現頻度をカウントできる。
  • 配列の結合はarray_merge関数が使える。同じ文字列型のインデックスがある配列を結合すると、インデックスの値は後で指定した配列で上書きされる。上書きしてほしくない場合は、array_merge_recursive関数を使う。こちらはインデックスに対応する値を単一の値ではなく、配列とすることにより、上書きを回避している。
  • sort関数は配列の要素を並び替える。インデックスは無視される(要素の並び替えに合わせてインデックスも並び替えられるわけではない)。2番目の引数にSORT_STRINGとすると、値を文字列とみなしてソートすることができる。数値として並び替えるのであれば、SORT_NUMERICと指定する(省略した場合はこっちが優先される)。
  • 配列を逆順にするにはarray_reverse関数を用いる。インデックスも並び替えられる。
  • ksort関数を用いると、インデックスの昇順で並び替え、krsort関数を用いるとインデックスの降順で配列を並び替える。
  • インデックスも合わせて値を並び替えるにはsort関数ではなくasort関数を用いる。降順に並び替えたければarsort関数を用いる。
  • array_pad関数は配列を拡張して、指定した値で配列を要素を埋めていく関数である。
  • range(a, b)とすると、array(a, a+1, ..., b)のように、指定した範囲の整数を値として持つ配列を作成できる(Pythonのrangeはbを含まないが、PHPは含む点に注意)。3番目に数値の間隔を指定することもできる。
  • array_shift関数は配列の先頭要素を削除する。返り値は削除された先頭の値となる。逆に、先頭に追加するのはarray_unshift関数で、その返り値は要素数となる。
  • array_popは配列末尾の値を削除する。返り値は削除された末尾の値となる。逆に、末尾に値を追加するのはarray_push関数で、その返り値は要素数となる。
  • 途中にあるものを複数削除するにはarray_splice関数がある。array_spliceには値を置き換えるという機能もある。
  • 配列からランダムに要素を取り出すのはarray_rand関数である。第2引数で値を指定することにより、ランダムに取り出す件数を指定できる。
  • shuffle関数を用いると、配列をランダムに並び替える。元データを破壊することになるので、その点については注意。
  • 配列の一部切り出しはarray_slice関数を用いる。
  • 配列のコピーは$a2 = $a1が単純である。あるいはarray_aliceで先頭から切り出すと書いてもよい。
  • array_sum関数は配列のデータを合計する機能がある。"10点"は10と解釈する。"p.10"は数値として評価されない(無視される)。
  • 配列の各要素を関数で処理するにはarray_walk関数がある。array_walk関数は配列とユーザ定義関数を指定する。従って、PHPに初めからある関数を呼び出したい場合は、ユーザ定義関数の中で呼び出すことになる。
  • compact関数は変数を配列にセットするための関数である。
  • $a = 1;
    $b = 2;
    $array = compact($a, $b); // a, bというインデックスが配列に含まれる
  • 配列から要素に展開するにはlist関数を用いる。
  • $array = array(1, 2);
    list($a, $b) = $array; // $a, $bという変数に1, 2が入る
  • ある要素が配列中にあるか判定する関数としてin_array関数がある。返り値はTRUE、FALSEのどちらかになる。
  • ある要素が配列中にあればそのインデックスを返す関数としてarray_search関数がある。存在しないか調べるには返り値に対しis_numeric関数で判断すればよい(インデックスがすべて数字であればの話だが)。

2014年9月27日土曜日

PHPmemo_day6

PHPの基本に関するメモ。参考にしているのはPHPによるWebアプリケーションスーパーサンプル第2版の第6章(日付)です。

  • time関数
    • 現在時刻を取得するための関数。1970年1月1日の0時0分0秒からの経過秒数を取得できる。
  • date関数
    • time関数の内容から整形して出力する。YmdHis(年月日、時分秒)を使って整形する。
  • microtime関数
    • 現在時刻をマイクロ秒まで取得する。返り値のフォーマットは"小数部 整数部"となっているので、文字列をスペースで区切り配列に入れるよう explode(" ", $ret);とすることでarrayとして扱えるようになる。
  • idate関数
    • dateの一部を返す関数。PHP5以降で使える。
  • getdate関数
    • 日付の値を別々に取り出すための関数。$d = getdate();と呼び出すとarrayが返されるので、$d["year"]のようにして参照する。
  • mktime関数
    • タイムスタンプ(1970年1月1日の0時0分0秒からの経過秒数)を得るための関数。指定日数後の日付も計算できる。つまり引数に1月32日と入れられても自動的に2月1日と換算してくれるということである。また0日と指定すると、前月の最終日に自動的に変換される。
  • strtotime関数
    • 日付の文字列フォーマットからタイムスタンプを得るための関数。こちらも指定日数後の日付を計算できる。

2014年9月26日金曜日

PHPmemo_day5

PHPの基本に関するメモ。参考にしているのはPHPによるWebアプリケーションスーパーサンプル第2版の第5章(数値)です。

  • 0による除算はエラーメッセージが出てくる。
  • bindecは2進数から10進数へ、decbinは10進数から2進数に数値を変換する。16進数を使って変換する場合はhex、8進数ならoctに置き換えれば、同様の関数を利用できる。
  • ceilは切り上げ、floorは切り捨て、roundは四捨五入のための関数である。
  • maxやminは配列に対しても可変長引数に対しても最大、最小を計算して返してくれる関数である。
  • number_formatを利用すると、3桁ごとに区切って数値を表示することや、小数点以下何桁まで表示するかといったことを指定できる。日本と海外では桁数の多い数字の書き方が異なるので、その変換に使える。またフランス流の表記では1 234 567のように,でなく空白を用いて数字を書くので、そのような場合にも用いられる。
  • rand関数、mt_rand関数は乱数を発生させるための関数である。最小値と最大値を指定して発生させる乱数のレンジを指定できる。getrandmax関数、mt_getrandmax関数を用いることで乱数の既定の最大値が分かる。
  • intval関数により、文字列の整数値を数値としての整数値に変換できる。ただし、この関数は仕様がやや複雑なので、使うときにはリファレンス必須。

2014年9月23日火曜日

PHPmemo_day4

PHPの基本に関するメモ。参考にしているのはPHPによるWebアプリケーションスーパーサンプル第2版の第4章(文字列)です。

  • 文字列の結合と代入を一度に行うための演算子は.=である
  • substr関数は部分文字列を抽出するための関数である。
  • $s = "0123456789";
    substr($s, 5); // "56789"になる。添字で5以降が抽出される。
    substr($s, -2); // "89"になる。最後の2文字を抽出する。
    substr($s, 0, 2); // "01"になる。添字で0から1までが抽出される。
  • substr関数はマルチバイト文字に対して使うべきではない。マルチバイト文字に対応するmb_substr関数を使うべきである。mb_substr関数では読み込む文字のコードを指定することができる。
  • str_shuffle関数で文字列をランダムに並び替えることができる。
  • str_replace関数は処理対象の文字列、置換対象の文字列、置換後の文字列を指定することで、返り値で処理対象後の文字列が得られる。PHP5では第4引数に変数を与えると、置換した回数が返される。
  • ereg_replace関数は正規表現パターンを利用して文字列を置換できる。
  • $s = "012-abc";
    $p = "[0-9]";
    $r = "*";
    echo ereg_replace($p, $r, $s); // "***-abc"に置換される
  • preg_replace_callback関数を用いると、パターンにマッチした部分をどのように置換するかを関数で定義できるようになる。callbackなので、指定したパターンが見つかる度に指定した関数が呼ばれることになる。
  • 文字列の前後の空白を取り除くにはtrim関数を用いる
  • 文字列の比較にはstrcmp関数を用いる。大文字小文字を区別せず比較するのであれば、strcasecmp関数を用いればよい。
  • strtoupper、strtolower関数により、文字列をすべて大文字、小文字に変換することができる。
  • ucfirst、ucwords関数を用いると、文字列の文章の先頭、文字列の各単語の先頭を大文字に変換することができる。
  • explode関数は指定した文字で文字列を分割する。返り値はarrayになる。
  • n文字ごとに文字列を分割したいということであれば、str_split関数を用いればよい。
  • 文字列を繰り返し結合するにはstr_repeat関数がある。
  • 文字列中に特定の文字列が出現する回数を求める関数として、substr_count関数がある。
  • strlen関数はバイト単位の文字列の長さを返す。従って、ひらがなは2バイトなので2文字としてカウントされる。ひらがらのようなマルチバイト文字を1文字としてカウントするのはmb_strlen関数である。
  • mb_convert_kana関数を用いると全角と半角間の変換ができる。日本語限定と思って使うこと。

2014年9月20日土曜日

PHPmemo_day3

PHPの基本に関するメモ。参考にしているのはPHPによるWebアプリケーションスーパーサンプル第2版の第3章(変数、定数)です。

  • echoで文字列と変数の間にスペースを入れずに出すには{$var}のように{}で囲えばよい
  • 変数の型を調べるにはgettype関数を利用する
  • 変数の型変換にはsettype関数を利用する
  • var_dump関数を利用すると、変数の方に関する情報と値をまとめて出力できる
  • get_defined_vars関数を利用すると定義済みの変数情報一覧を取得できる。
  • define関数で定数を定義できる。C言語の#defineみたいなものとみてよいだろう。
  • defined関数で定数が定義済みか調べられる。
  • define("EXP", 2.718)のように定義したEXPを参照するにはEXP、あるいはconstant("EXP")とする。
  • __FILE__はPHPコードの書かれたファイル名、__LINE__はコードの行番号を表す定数である。
  • M_PIは円周率、M_SQRT2はルート2を表す定数である。
  • get_defined_constants関数で定義済みの定数一覧を取得できる。
  • get_defined_constants関数のように一覧を取得して表示したいのであれば、print_r関数が使える。print_r関数はデバッグにも使える。
  • $_SERVER["HTTP_USER_AGENT"]はブラウザの情報を、$_SERVER["HTTP_REFERER"]はリンク元を、$_SERVER["REMOTE_ADDR"]はアクセス元のIPアドレスを表す(PHP4.2.0以降)

2014年9月18日木曜日

PHPmemo_day2

PHPの基本に関するメモ。参考にしているのはPHPによるWebアプリケーションスーパーサンプル第2版の第2章前半です。 コードを書いて紹介するのは大変なので、C言語やJavaと違うところを主に取り上げていきます。

  • フォームからPOST送信された値を受け取るときには$_POST["content"]とすればnameがcontentのデータを受け取れる。
  • php.iniのregister_globalsをONにすると$contentで参照できるようになるが、セキュリティの都合上OFFにするのが一般的
  • @$_POST["content"]とすることで、contentが初期状態で何も設定されていない状態でもエラーが出なくなる
  • $_SERVER["PHP_SELF"]は現在表示中のURLを表すサーバ変数である
  • $HTTP_POST_VARS["content"]のようにPOST送信されたデータを受け取ることもできるが、php.ini-recommendedでは無効になっている。
  • php.iniにはdisplay_errorsという設定項目がある。これはエラーを画面に出すためのオプションであり、デバッグに使える。
  • $_GET["type"]などとすればGET送信されたURLのtype=の値を取得することができる。
  • フォームから送信されるデータはstring型である。
  • フォームから変数を受け取って、同じ変数名に受け取った値を設定するには、extract関数を使う。ただし、extract($_POST)のように記述すると、ユーザの入力をそのまま出すのでエスケープ処理などをした方がよいとされる。
  • フォームからある変数が飛んできているか調べるにはisset関数を利用する。if文や三項演算子を用いて変数の有無で変数を設定する際に使える。
フォームからの入力内容を確認するためによく使われる関数についても紹介しておきます。
  • function_exists
    • 引数の文字列の関数名が定義されているかを調べるための関数
  • strlen
    • 文字列の長さを調べるための関数
  • empty
    • 空、または0でTRUEを返す関数
  • isset
    • 変数が定義されていればTRUEを返す関数
  • stristr、strstr
    • 文字列のマッチングで利用する関数。前者は大文字と小文字の違いをignore(無視)するが、後者では区別している。
  • is_numeric
    • 文字列が数字として解釈できるのであればTRUEを返す関数。数字は半角でないとTRUEにならない。
  • ctype_digit
    • is_numericに似ているが、小数点が含まれるとFALSEになる点が異なる。あとは同じ。
  • ctype_loert、ctype_upper
    • 引数の文字列が小文字、あるいは大文字だけからなるかを調べる関数
  • checkdate
    • 引数で与えた月、日、年の数値がグレゴリオ暦で正しい日付か(存在する日付であるか)調べる関数

2014年9月17日水曜日

PHPmemo_day1

PHPの基本に関するメモ。参考にしているのはPHPによるWebアプリケーションスーパーサンプル第2版の第1章です。 コードを書いて紹介するのは大変なので、C言語やJavaと違うところを主に取り上げていきます。

  • PHPのコードは<?~?>で囲う
  • 変数は$i=(値)のように定義する
  • echo、printで文字列出力を行う。HTMLをechoで出力する方法もある。
  • echoをダブルクォートで囲うと変数は変数の値に解釈され、シングルクォートで囲うと変数名は文字列と解釈される
  • $s = "abc";
    echo "string=$s"; // string=abcと表示される
    echo 'string=$s'; // string=$sと表示される
  • 文字列の結合はドット(.)で行う
  • 空文字、null、0も論理値のFALSEとして扱われる。それ以外はTRUEになる。
  • 関数にはデフォルト値を設定することができる。
  • func(1)とcall_user_func(func, 1)は同値になる

フォロワー

ページビューの合計