PHPとLaravelの型、文字列出力の復習
■JSON
参考:http://www.tohoho-web.com/ex/json.html
・jsonの基本
{ "name": "Tanaka", "age": 26 }
変数名と文字列はダブルクォーテーションで囲む。
数字、null、真偽値(true, false)はそのまま。
・オブジェクトは{}で囲まれる。
{
"user_info": {
"user_id": "A1234567",
"user_name": "Yamada Taro"
}
}
取得:$json->user_info->user_id ・・・(A1234567)
・配列は[]で囲まれる。
配列の中に配列も、オブジェクトも含められる。
{
"color_list": [ "red", "green", "blue" ],
"num_list": [ 123, 456, 789 ],
"mix_list": [ "red", 456, null, true ],
"array_list": [ [ 12, 23 ], [ 34, 45 ], [ 56, 67 ] ],
"object_list": [
{ "name": "Tanaka", "age": 26 },
{ "name: "Suzuki", "age": 32 }
]
}
取得:$json->object_list[1]->name ・・・(Tanaka)
JSONデータは文字列。中身を扱うにはデコードが必要。
$json = '{"a":1,"b":2,"c":3}';
var_dump(json_decode($json)); →stdClassのオブジェクトになる。->で呼ぶ。
var_dump(json_decode($json, true)); →連想配列になる$array["a"]で呼ぶ。
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
}
■文字列の出力
参考:https://www.sejuku.net/blog/23247
〇echo
・一度に複数の変数、文字列を引数として出力できる。カンマで区切る。
echo 'こんにちは。', $name, 'さん。';
・戻り値がない。
・ヒアドキュメントを使える。長い文章がコード上で見やすくなる。
$message = <<< EOM
長い文章を<br>
簡単にわかりやすく<br>
書くことができます。
EOM;
echo $message;
<<<がヒアドキュメント開始のサイン。その直後の文字が文字列の開始と終了のサイン。このサインの文字列は何でも良いが、EOMやEODが慣例。間の文字列が出力される。
〇print
・引数はひとつのみ。
・戻り値は常に1。
$val = print 'おはよう。';
print $val; →1
・echoより若干処理速度が速い。
・print "こんにちは。 $name さん。";もOK。
〇エスケープシーケンス
一部の文字("、$など)はそのまま入力しても出力できない。
https://www.php.net/manual/ja/regexp.reference.escape.php
https://www.sejuku.net/blog/71603
〇文字列の生成
https://www.php.net/manual/ja/language.types.string.php
・ダブルクォーテーション内であれば変数の展開が可能。
echo "{$str1}{$str2}";
■文字列
https://www.php.net/manual/ja/language.types.string.php#language.types.string.parsing
・ダブルクォーテーション内であれば変数の展開(パース)とエスケープシーケンスの変換がされる。(ヒアドキュメントも同様。)シングルクォーテーションではそのまま文字列として出力される。
$str = "hello";
echo '$str'; →$str
echo "$str"; →hello
echo "$strs" →出力無し。エラー。
echo"${str}s" →hellos 変数名の終りを明示したい場合は、変数名を波括弧で括る。
echo ' \" '; → \"
echo " \" " → "
echo "{$str}" →hello 複雑な(波括弧)構文
$arr['name'] = "Mike";
echo "This works: {$arr['name']}"; クォートしたキーを使う場合は波括弧構文必須。
■条件式の書き方
if*1 {・・・}
■Laravelでの変数の出力
{{, }} で囲った場合は、htmlspecialchars 関数に通したものが出力される。
→htmlを書いてもhtmlにならない。
→ユーザの入力をそのまま出力する場合、悪意あるデータをそのまま出力しないようにこれを使う。
*1:1 == 1) && (2 == 2