20211016のPHPに関する記事は5件です。

【Laravel】implodeで配列を文字列にして取得

はじめに 今回はimplodeを使って配列を結合し、文字列としてデータを取得する方法を見てみましょう。 implode( ) Laravel $collection = collect([ ['id' => 1, 'name' => 'Taro'], ['id' => 2, 'name' => 'Hanako'], ]); $collection->implode('name', ':'); とすると、Taro:Hanakoという文字列になります。 値が数字や文字列だけなら Laravel collect(['Taro','Hanako'])->implode(':'); と簡潔に記述することができます。 おわりに implodeとは反対の動きをする、つまり、文字列を配列に変換するexplodeというものもあります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHP

変数  変数=箱のようなもの 変数名の前に$をつける 変数を利用することによって何回も利用できる。 変数の定義 $name ="レバテック太郎"; $age = 20; 定数 変数と異なり、中身を変えたくない場合に利用する。 データを上書きしたくないなどの大事なデータを扱う際に利用する。 定数の定義 difine = ("address","123-000"); 配列 棚のようなもの 配列の定義 $fruits = ["apple","banana","melon"]; 連想配列 データ名とデータ 連想配列の定義 $fruits = ["apple" => 100,"banana" => 150,"melon" => 200]; //appleがキー(データ名)、数字がデータ  比較演算子(==と===)の違い == 、!=の場合、左辺と右辺が同じであれば、左右の型が同じになるように変換される。 ===、!==の場合、データ型が異なる場合でも、型の変換は行われない。 ===、!==を使おう 比較演算子の違い var_dump(1 == "1"); //true var_dump(1 === "1") //false switch文 switch(式) { case 値❶: echo 値❶が式に当てはまる場合の処理 break; case. 値❷: echo 値❷が式に当てはまる場合の処理 default; echo どれにも当てはまらないときの処理 } switch文 switch($price) { case '300': echo '高い'; break; case '200': echo 'まあまあ'; break; case '100': echo '安い'; break; default: echo 'どれも買わない'; } while , do~while文 while(条件) { 繰り返したい処理 } do~whileの場合、必ず一回は処理は1実行される。 do { 繰り返したい処理 } while(条件) 条件式が下にあり、わかりづらいので、do~whileは推奨しない。 for文 for文 for($number = 1;$number <= 10;$number++) { echo '出席番号'.$number.PHP_EOL; //PHP_EOLは改行マーク /*出力結果 /* 出席番号1 出席番号2 出席番号3 出席番号4 ↓ ↓ ↓ 出席番号10 */ foreach 配列/連想配列の要素を取り出し、1つずつ順番に処理していく。 <配列ver> foreach(配列 as 変数) { 繰り返したい処理 } 配列verのforeach $colors = ["red","green","yellow","blue"]; foreach($colors as $color ) { echo $color . "を好みます" . PHP_EOL; /*出力結果 redを好みます greenを好みます yelllowを好みます */ <連想配列ver> foreach(配列 as key変数 =>値変数) { 繰り返したい処理 } キーはキー変数に、値は値変数に代入!! 連想配列ver $colors = ["red"=>100,"blue"=>200,"yellow"=>300,"green"=>400]; foreach($colors as $key => $value) { echo $key.'は'.$value.'という数字です'.PHP_EOL; } /*出力結果 redは100という数字です blueは200という数字です */ break命令、continue命令 breakは条件に当てはまる部分で処理が止まる continueは条件に当てはまる部分をスキップし、処理が進む。 クラスとインスタンス <オブジェクト指向> あらかじめ雛形をつくっておいて再利用するという考え方 ゲームにはさまざまなキャラが登場するので、1つ1つキャラの性能を作るのではなく、あらかじめ1つ雛形を作り、それを使いまわしていく。 雛型をクラス、雛形から作成した物体(キャラ)をインスタンス,インスタンスを生成することをインスタンス化という。 名前や特徴をプロパティ,攻撃などのアクション(炎を出す、歩くなど)を関数 クラス定義 class クラス名 { //プロパティ定義  //関数定義 } キャラのクラスを作成する(雛型完成)↓ キャラクラス定義 class character { piblic $name=""; publiv $attack=0; public $defence=0; public function attack() { //攻撃コード } public function defence() { //防御する際のコード } } <アクセス修飾子> public→どこからでのアクセス可能 private→現在のクラスからのみアクセスできる protected→現在のクラスとサブクラスからアクセスできる <インスタンス化> 雛形(クラス)ができたら、インスタンス化してキャラを作っていく。 インスタンス化 $インスタンス名(キャラ名) = new クラス名; gozira(ゴジラ)を作成する インスタンス化 $gozira = new character; ゴジラのプロパティと関数も作成する インスタンス化 $gozira->attack = 40; $gozira->defence = 100; //関数呼び出し $gozira->attack(); わかりやすくクラスとインスタンスについてまとめる!! クラスとインスタンス class クラス名 { public $変数名; public $変数名; public function 関数名() { //実行内容 } } //インスタンス生成 $インスタンス名 = new Class名(); $インスタンス名->変数名 = 値; $インスタンス名->関数名(); ?> インスタンスでの変数は$いらない。 クラス名は頭文字大文字  ->(アロー演算子)は、変数へのアクセス、関数の実行という意味 偶数と奇数の判断(if文) CUI(キャラクターユーザーインターフェース)→キーボードだけで操作する画面。 コマンドライン→キーボードだけで操作する入力行。(コマンド:命令) <$argvを使ってコマンドライン引数を取得する方法> PHP $animals = $argv[1] if($animals === 'dog') { echo $animals . 'はワンワンとなきます' . PHP_EOL; } elseif($animals === 'cat') { echo $animals . 'はニャーニャーとなきます'.PHP_EOL; }; コマンドライン上で、 php ファイル名.php catとすると、$argvに引数catが渡され、「catはニャーニャーとなきます。」と出力される。 <自分メモ> 「vi ファイル名」でファイルを編集 「php ファイル名.php」で処理実行。 escキーで 終了。 :wでwritten表示 :qでファイル閉じる FizzBuzz 3の倍数の時はfizz 5の倍数の時はbuzz 3の倍数でもあり、5の倍数でもある時はfizzbuzzと出力するようにする。 <結合ver> PHP for($i=1;$i<=100;$i++) { $str = ''; if($i%3===0) { $str .= 'fizz'; } if($i%5 === 0) { $str .= 'buzz'; } if($str === '') { $str .= $i; } echo $str . PHP_EOL; } 3の倍数でもあり、5の倍数でもあるとき、どちらともifなので、fizzとbuzzが結合されて、fizzbuzzが出力される。 外部PHPファイルの読み込み 配列に1〜100までの数値を入れる場合 $numbers = array(1,2,3,4,5,6,...)と1つずつやるのは面倒!! PHP $numbers = array(); for($i=1;$i<=100;$i++) { array_push($numbers,$i); } ?> //array_push(配列、追加したい要素) 情報をわかりやすく出力する「print_r」 第一引数には配列名、第二引数にTRUEを指定すると、取得することができる。  $result = print_r($配列名、TRUE)で$resultに格納することができる。 echo $resultで出力 input.php $animals = ['item1'=>'dog','item2'=>'cat','item3'=>'tiger']; print_r($animals); /*出力結果 Array ( [item1]=>dog, [item2]=>cat, [item3]=>tiger, ) */ <外部ファイルの読み込み> + require(ファイル名)で外部ファイル読みこみ output.php <?php require('input.php') print_r($animals); ?> 関数定義 <関数のメリット> 可読性の向上 何度も使いまわせる カウンタ変数の合計値を出力する関数↓ PHP <?php function sum_number($min_num,$max_num) { $result = 0; for($i = $min_num;$i <= $max_num;$i++) { $result = $result + $i; } echo $result . PHP_EOL; } //関数の呼び出し sum_number(2,6) //2から6までの合計値が出力される。 クラスとインスタンス オブジェクト→複数の変数と複数の関数をまとめ、グループ化したもの。 オブジェクトの持つ変数をプロパティ、 オブジェクトの持つ関数をメソッドという。 クラス→オブジェクトの設計図(クラスの最初は大文字が慣例) インスタンスクラスから作られたオブジェクトの実体 animal.php class Animal { public $cry = 'wanwan!'; funciton wan() { echo 'wanwan!' . PHP_EOL;  //または echo $this->cry .PHP_EOL } } //インスタンスの生成 $animal_dog = new Animal(); //インスタンスの使用 $animal_dog->bow(); /*実行結果 wanwan */ animalクラス内で$cry変数とwan関数を宣言している。 クラス内で宣言している関数を呼び出すには「->」を用いる 同じクラス内の変数を使うには「$this->変数名」で使用できる。 クラスの継承 継承することによって、ある1つのクラス機能の再利用をすることができる。 animalクラスから猫クラスを作る場合,animalクラスを継承する形で生成する。 クラスの継承 <?php class Animal { public $cry = 'www'; function w() { echo $this->cry . PHP_EOL; } } //クラスの継承 class Cat extends Animal { public $cry = "にゃーにゃー"; } $animal_cat = new Cat(); $animla_cat->w(); ?> /*実行結果 にゃーにゃー */ <クラスの継承> class 新クラス名 extends 親クラス名 { //追加したい機能をここにかく  }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

はじめてのLaravel8

はじめに 今行きつけのアミューズメントカジノでランキングバトルなるものをやっています。 そこのオーナーが成績を紙で記録し手動で計算していたのでVBAで計算を自動化したものを作りました。 これってWeb上で成績をゲストも閲覧できたらいいのでは?と思い、 10年前にWebプログラマをしていた経験を活かしPHPで簡単なランキングを集計閲覧できるものを作ろうと思いました。 規模も小さいのでPHPで1から作ったほうが楽な気がしますが、せっかくなので今流行りのフレームワークを使って開発していきたいと思います。 10年前はCakePHPが主流だったんですが今はLaravelが主流というか勢いがあるんですね。ということでLaravelを使って1から勉強していきます。 その備忘録となります。 勉強方法 「Laravel 入門」と検索すればいくらでも勉強できるサイトが存在しますが、自分は書籍から入るのが好きなので本を買いました。 「PHPフレームワーク Laravel入門第2版」 書籍ではLaravelのバージョンは6をベースに書かれていますが最新版のバージョン8でやっていきます。 2022年1月にLTSのバージョン9がリリースされるそうなのでリリースされればそちらに移行します。 開発環境 Windows10 Home Composer 2.1.9 PHP 8.0.11 Laravel Framework 8.64.0 XAMPP 8.0.11 バージョン管理はGithub、ある程度形になったら外部公開を「さくらのVPS」にしようと思っています。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】PHPでコントロールブレイク

やりたいこと 同じ名前のレコードのデータがあったら、それぞれデータが異なるので復数欲しい ※名前が昇順である前提 <?php $data = [ ['name' => '田中', '国語の点数' => 777], ['name' => '渡部', '国語の点数' => 62], ['name' => '品川', '国語の点数' => 23], ['name' => '品川', '国語の点数' => 4343], ['name' => '滝谷', '国語の点数' => 93], ['name' => '川原田','国語の点数' => 55], ['name' => '一色', '国語の点数' => 27], ['name' => '一色', '国語の点数' => 89], ['name' => '高橋', '国語の点数' => 555], ['name' => '高橋', '国語の点数' => 9999], ]; foreach ($data as $cnt => $row) { if($cnt === 0){ $key = $row['name']; $store[] = $row['国語の点数']; } if($key === $row['name']){ $key = $row['name']; $store[] = $row['国語の点数']; }else{ $result[$key] = implode(',', array_unique($store)); $key = $row['name']; $store = []; $store[] = $row['国語の点数']; } } $result[$row['name']] = implode(',', array_unique($store)); var_dump($result); 結果 array(7) { ["田中"]=> string(3) "777" ["渡部"]=> string(2) "62" ["品川"]=> string(7) "23,4343" ["滝谷"]=> string(2) "93" ["川原田"]=> string(2) "55" ["一色"]=> string(5) "27,89" ["高橋"]=> string(8) "555,9999" }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】Qiita デイリー LGTM 数ランキング【自動更新】

他のタグ AWS Android Docker Git Go iOS Java JavaScript Linux Node.js PHP Python Rails React Ruby Swift TypeScript Vim Vue.js 初心者 集計について 期間: 2021-10-18 ~ 2021-10-19 GitHub スターをもらえるととっても励みになります LGTM 数ランキング 1 位: LaravelをDockerを使って構築する PHP Mac Windows Laravel Docker 2 LGTM 0 ストック @koya1616 さん ( 2021-10-18 22:03 に投稿 ) 2 位: 自分のTwitterAPIキーで任意のアカウントのAccess Tokenを確認するツールを作った PHP HTML JavaScript Twitter TwitterAPI 1 LGTM 1 ストック @ichii731 さん ( 2021-10-18 19:39 に投稿 )
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む