平凡エンジニアによる平凡ブログ

平凡インフラエンジニアがスキルアップを目指してプログラミングやクラウドやサーバといったインフラのアウトプットをしていきます!

【PHP】配列の要素を変数に入れなおす

今回のテーマ

PHPで配列の要素を変数に設定する場合を備忘録として残します。

前提条件

例えば「15:00 1 30」と時刻の値を標準入力で渡し
この入力値から16:30と言う値を出力させたいとします。

ここから[0]の要素である15:00をそれぞれ+するために「15」「00」を分けたいというのが今回の前提条件になります。

// 標準入力の値を$aに代入する
 $a = trim(fgets(STDIN));

// 半角スペース区切りで文字列から配列に変換する
 $array=explode(" ",$a);

// 配列の要素を確認     
print_r($array);


// 出力
Array
(
    [0] => 15:00
    [1] => 1
    [2] => 30
)    

listにすれば設定が可能

以下の記事を参考にさせていただきました。

配列要素を個々の変数に格納する - PHPの部屋

 $a = trim(fgets(STDIN));
    
 $array=explode(" ",$a);
 
 // listを使い、それぞれ変数に代入する
 // $time=15:00,$hour=1,$minutes=30   

 list($time,$hour,$minutes)=$array;
 
// substrを使い$time1=15, $time2=00を抽出する
 $time1 =substr($time,0,2);
 $time2 =substr($time,3,5);

// 抽出した$time1 $time2にそれぞれ$hourと$minutesをプラスする

 $time1=$time1+$hour;
 $time2=$time2+$minutes;

// 最後に:をつけて出力させる
 echo $time1.":".$time2;

//出力結果
echo $time1.":".$time2;

補足

注意なのは足し算で時刻を出力させるプログラムとして不十分です。
以下の点を考慮しなければなりません。
条件分岐で処理を追加する必要がありますが、ここでは説明省きます。

例えば15:20に40分を足した際に16:10にする場合など
16:02と出力する場合にこのプログラムだと16:2の出力になってしまうので  
0をプラスする

まとめ

  • listを使えば配列の要素を、変数に設定できる