大企業営業から未経験ITエンジニアを目指すブログ

アラサー大企業営業から未経験ITエンジニアを目指すブログ。日々学んだことを忘備録的に記します。

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)

 

PHPJSONデータを扱う

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