[PHP]変数・演算子・制御構造などのメモ

phpのまとまりのないメモ

メモ書き

  • PHP: PHPにできることは? - Manual
  • 0は8進数、0xは16真数
  • 使ったこと無いけど エスケープシーケンスには /7 とか /xFF とかあるのね。
  • 二十引用符(とヒアドキュメント)内の変数は展開される
  • Nowdoc(from PHP5.3.0)
  • 用語:第一オペランド、リテラル

命名規則とかお約束っぽいもの

「命名規則ってなんだ…」とか数日前に思いました。

ということで参考にしたサイトのリンク

スタティック変数

<?php
function test()
{
  static $count = 0;

  $count++;
  echo $count;
  if ($count < 9) {
    test();
  } else {
    echo "\n";
  }

  if( $count==8 ){
    $count -= 5;
  } else {
    $count--;
  }
}

test(); test(); test(); test();
?>

結果

123456789
-3-2-10123456789
-7-6-5-4-3-2-10123456789
-11-10-9-8-7-6-5-4-3-2-10123456789

スタティック変数の初期化には式は使えない

<?php
function static_test($int) {
  static $static = $int;
}
?>

結果

Parse error: syntax error, unexpected T_VARIABLE in ファイルパス on line 3

import_requestvariables()とかHTTP***_VARSとか

import_request_variables()

GET/POST/Cookie変数をグローバルスコープにインポート。

<?php

$action = preg_replace('/\?(.*)$/ui','',$_SERVER[REQUEST_URI]) . '?get=get_value' ;
echo <<< FORM
<form action="$action" method="post">
  <input type="hidden" name="post" value="post_value" />
  <input type="submit" value="post">
</form>
FORM;

import_request_variables('p', 'p_');
echo $p_post . "\n" ;
import_request_variables('g', 'g_');
echo $g_get . "\n" ;
import_request_variables('gp', 'gp_');
echo "$gp_post & $gp_get" . "\n\n" ;

var_dump( $HTTP_POST_VARS );
var_dump( $HTTP_GET_VARS );

?>

結果

post_value
get_value
post_value & get_value

array(1) {
  ["post"]=>
  string(10) "post_value"
}
array(1) {
  ["get"]=>
  string(9) "get_value"
}

あ、あとPHP: コア php.ini ディレクティブに関する説明 - Manualを読んどこうね。

演算子の優先順位

<?php
//さてどう出力されるでしょう?
if( TRUE xor FALSE or TRUE ) echo "A";
if( TRUE xor FALSE || TRUE ) echo "B";
?>

結果

A

Bは条件式を通らないので出力されない。

じゃあこれはどうなっているのか。

<?php
$a = $b = $c = "t" ;
echo $a, $b, $c, "\n" ;

if( $d = $a ) var_dump($d) ;
if( $e = $a === "t" ) var_dump($e) ;
if(($f = $a)=== "t" ) var_dump($f) ;
?>

結果

ttt
string(1) "t"
bool(true)
string(1) "t"

三項演算子 ? ternary 条件文

<?php
$first = 1;
$second = 2;
$third = 3 ;

!$first ? var_dump($second) : var_dump($third) ;
$first  ? var_dump($second) : var_dump($third) ;
?>

結果

int(3)
int(2)

制御構造

コロンを使った書き方

PHP: 制御構造に関する別の構文 - Manualを参照。。

<?php
  if(TRUE) :
    if(TRUE){echo"ECHO";}
  endif;

  if(TRUE) : ?>
    <p>よくある使い方ですな。。</p>
  <?php endif;
?>

結果

ECHO    <p>よくある使い方ですな。。</p>

do-while文

最初にかならず do の部分が実行されることを除いて while と同等

<?php
do{
  echo "DO!!";
} while (FALSE) ;
?>

結果

DO!!

break

for分などを抜ける。抜ける数を指定可能。ただし、ネスト数以上の数値を指定するとエラーになる。

<?php if(TRUE) break 100 ?>

結果

Fatal error: Cannot break/continue 100 levels in ファイルパス on line 1
Share
関連記事