PHP表記
<?php
?>
<script language="php">
</script>
上記の表記はどちらでも可能
------------------------------
参照渡し
<?php
$var1 = "hoge";
$var2 =& $var1;
$var1 = "hogehoge";
print $var2;
?>
出力結果
hogehoge
-----------------------------
可変変数
<?php
$a = "hoge";
$$a = "hogehoge";
print $$a;
print $hoge;
print "${$a}";
?>
出力結果
$$a hogehoge
$hoge hogehoge
${$a} hogehoge
------------------------------
関数のパラメータを配列に返す
<?php
function HogeFunc($str,$int){
$hoge_array = func_get_args();
return $hoge_array;
}
$hoge_array = HogeFunc("hoge",100);
print_r($hoge_array);
?>
出力結果
Array
(
[0] => hoge
[1] => 100
)
------------------------------
break n
引数[n]が省略された場合には1として
最も内側のループから脱出します。
<?php
for($i=0; $i<10; $i++){
for($a=0; $a<10; $a++){
if($a == 5){
$flag = "ok";
break 2;
}
}
if($flag == "ok"){
exit("$flag");
}
}
?>
出力結果
$flagであるokは表示されない
------------------------------
関数返り値
<?php
function MyFunc(){
$var_1 = array("あいうえお","かきくけこ");
$var_2 = array("no"=>"1","name"=>"名前");
return array($var_1,$var_2);
}
list($str,$data) = MyFunc();
$array = MyFunc();
print_r($str);
print_r($data);
print_r($array);
?>
出力結果
[$str]の結果
Array
(
[0] => あいうえお
[1] => かきくけこ
)
[$data]の結果
Array
(
[no] => 1
[name] => 名前
)
[$array]の結果
Array
(
[0] => Array
(
[0] => あいうえお
[1] => かきくけこ
)
[1] => Array
(
[no] => 1
[name] => 名前
)
)
------------------------------
再帰的(recursive)
この関数ではstaticを使用している為、関数を呼び出されるたびに
$cntをインクリメントする。
<?php
function Recursive(){
static $cnt = 1;
print "$cnt\n";
$cnt++;
if($cnt == 5){
print "$cnt\n";
$str = "終了";
return $str;
}
if($cnt <= 10){
$str = Recursive();
return $str;
}
}
$string = Recursive();
print $string;
?>
出力結果
1
2
3
4
5
終了
------------------------------
例外処理
<?php
class FilesException extends Exception {
protected $time;
public function __construct($msg,$code){
parent::__construct($msg,$code);
$this->time = time();
}
public function __toString(){
return "例外クラス ".__CLASS__.":{$this->message}:{$this->code}\n";
}
public function getTime(){
return $this->time;
}
}
class Files {
public function __construct($file){
if(!file_exists($file)){
//ファイルが存在しなければ例外に投げる
throw new FileException("ファイル $file が存在しません。",3);
}
}
}
try{
$obj = new Files("hoge.txt");
print "例外後の処理\n";
}catch(FilesException $e){
//例外の発生したタイムを表示
print "例外時間:{$e->getTime()}\n";
//print を呼び出している為、toStringが表示される
print $e;
}catch(Exception $e){
print "例外:{$e->getMessage()}:{$e->getCode()}\n";
}
?>
出力結果
例外時間:xxxxxxxxxx(time)
例外クラス FilesException:ファイル hoge.txt が存在しません。:3
PR