備忘録と日記

備忘録・日記としていろいろ残していきます

【TechStudyGroup #3】ハッカソンで調べたことの備忘録(PHP)

5月30日に開催された、

オンラインでハッカソン! - TechStudyGroup #3

に参加してきました。

備忘録として、そこで調べたことをまとめたいと思います。

 

感想やまとめについてはリーダーが記事を上げてから私の方でも書きたいと思います。

↓ リーダーのブログです。

kn46itblog.com

頼もしくて自慢の後輩です。

 

ちなみに初ハッカソンでしたw

 

PHPを触るのが久しぶりで忘れ方が酷かったです...。

間違いがありましたらコメントお願いします

APIについてはバックエンド担当が作ってくれたので感謝感激です。

 

文字列の表示

文字列の囲み方

<?php
$str = 'Hello world.';
echo $str;  // ①クォーテーションなし
echo "$str";  // ②ダブルクォーテーション
echo '$str';  // ③シングルクォーテーション
?>

  実行結果  

① Hello world.
② Hello world.
③ $str

変数のみであれば①のようにクォーテーションなしでok

変数も文字列として表示するのであれば②のようにダブルクォーテーションで囲む。

③は文字列として$strを出力した。

 

 

文字列の連結

<?php
$a = 'Hello ';
$b = 'world';
echo "test: {$a}{$b}";  // ①
echo 'test: '.$a . $b;  // ②
echo 'test: ',$a , $b;  // ③
?>

  実行結果  

① test: Hello world
② test: Hello world
③ test: Hello world

①は文字列testと変数$aと$bを文字列のまとまりとして表示

②は文字列testと変数$a, $bを連結(.)して表示

③は「,」で区切られており、testと$a, $bの3つをそれぞれechoして表示

 

 


繰り返し

<?php

$prefectures = array("Fukuoka","Kumamoto","Kagoshima");

foreach($prefectures as $prefecture){  // ①
    echo $prefecture;
    echo "<br>";
}

for($i = 0 ; $i < count($prefectures); $i++){  // ②
    echo $prefectures[$i];
    echo "<br>";
}
?>

  実行結果  

Fukuoka
Kumamoto
Kagoshima
Fukuoka
Kumamoto
Kagoshima

②は普通のfor文。①はPythonでいう for prefectures in prefecture: みたいな感じかな。

 

 


ポインタの扱い

<?php

// さっきとは別の配列の作り方
$arr = array( 
    'north' => 'Fukuoka',
    'middle' => 'Kumamoto',
    'south' => 'Kagoshima',
);

next($arr);  // 内部ポインタを動かす

$a = $arr;  // 動かした結果を別の配列へ

echo current($a) . ;
echo current($arr) . ;

?>

  実行結果  

Kumamoto Kumamoto

特にポインタの移動では変化ないみたいですね。

 

 


データを次の画面へ引き継ぐ

セッション変数

色々やり方はあると思いますが、今回はセッション変数を使いました。

page1.phpを開いたあとpage2.phpに遷移して、page1.phpで設定したセッション変数を表示します。

  page1.php  

<?php

// セッションデータを初期化
// セッションIDの新規発行、又は、既存のセッションを読み込む
// $_SESSIONを読み込む
session_start();

// 有効期限30分
session_cache_expire(10);

$_SESSION["id"] = 'hoge';  // idの設定
$_SESSION["name"] = 'Kagoshima';  // nemeの設定

header("Location:./page2.php");  // page2.phpへ遷移

?>

  page2.php  

<?php
//既存のセッションの読み込み
session_start();
echo 'id: '.$_SESSION["id"].'<br>';  //idの表示
echo 'name: '.$_SESSION["name"].'<br>';  // nameの表示
echo 'session_id: '.$_COOKIE["PHPSESSID"].'<br>';  //セッションIDの表示

// すべてのセッション変数の削除
$_SESSION = array();

// クッキーの削除
if (isset($_COOKIE["PHPSESSID"])) {
    setcookie("PHPSESSID", '', time() - 1800, '/');
}

// セッションに登録されたデータの削除
session_destroy();

?>

  実行結果  

id: hoge
name: Kagoshima
session_id: 4td12a5e18egf8jqc60qkdjqap

ページ遷移しても変数が保持されていることを確認できました。

 

 

まとめ

セッション変数についてはセキュリティの面で様々な検討ができると思うので調べてみたいと思いました。

ハッカソン中はPHPマニュアルを詳しく読んでいる暇もなかったので、時間がある時にでも眺めてみたいです。

 

以上、備忘録ですがありがとうございました。

ではまた!