- 1. PHP 現在時刻を取得する
- 2. Laravel Collection型の空判定 isEmpty()
- 3. phpにおける関数
- 4. Type:JSONに、INSERTができない人へ
- 5. 【初心者】PHPで文字列の中に特定の文字列が含まれているのかチェック
- 6. Cake PHP4.2でDependency Injectionができるようになっていた!
- 7. 【PHP】Laravel bladeビューのリファクタリング。implode, nullチェック, 変数をタグとして出力
- 8. [php]usort関数について
- 9. Advance Custom fields(ACF)の出力方法まとめ
- 10. LION BLOGのカテゴリページを昇順にする方法
- 11. 【PHPとRuby記述の比較】記述方法がどんな風に違うんだろう?と疑問を持っている方へ
- 12. 文字列の長い順番に揃えたい
- 13. AdMobの売上データをデータベース連携する
- 14. Lightningにメニュー項目を追加(function.php/header.php)
- 15. pChart を PHP7 対応させる方法
- 16. 空白検知(ゼロ幅スペースなどに対応した完全版) in JS/PHP
- 17. phpにおけるhtml文のプルダウンメニューでループを回す方法
- 18. CakePHP デバッグの方法一覧
- 19. CakePHP データ取得の方法(get・find)
- 20. 【PHP】データの暗号化・復号化
PHP 現在時刻を取得する
# 目的
– PHPで現在時刻を「YYYY/MM/DD HH:MM:SS」の形で取得する方法を簡単にメモする
# 前提情報
– 下記サービスを使用して確認した。
– [https://paiza.io/ja](https://paiza.io/ja)# 詳細
– 下記を実行する。
“`php
echo date(“Y/m/d H:i:s”);
“`
Laravel Collection型の空判定 isEmpty()
## 困りごと
PHP歴3ヶ月、Laravel歴1ヶ月の初学者です。LaravelのCollection型の空判定でハマってしまったので、同じような方が減ることを祈って投稿します。下図のように、ある条件で検索を行い、Collection型で返ってきた値に「データが入っているか」or「空」であるかを判定して、表示を分岐をさせる方法についてです。
![flow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/e1b41a26-7df8-b9da-4dd4-9b17c7700908.png)>コレクション型とは?
>Object型の一種で、Laravel独自の型でデータベースからデータを取得した際等はこの型になっています。コレクションで利用可>能なメソッドは全部で100個以上あります。メソッドチェーンで記述が可能です。## 開発環境
PHP 7.2.34 / Laravel 6.20.5## 結論
Collection型の空判定はisEmpty()メソッドが優秀。“` con
phpにおける関数
#計算をする上で便利な関数
①ceil(切り上げ)“`
// index.php
$x = 5.2;
echo ceil($x);
“`②floor(切り捨て)
“`
// index.php
$x = 5.2;
echo floor($x);
“`③round(四捨五入)
“`
// index.php
$x = 5.2;
echo round($x);
“`④pi(円周率)
“`
echo pi();function circleArea($r) {
$circle_area = $r * $r * pi();
echo $circle_area;
}
※半径が2の円の面積の計算
circleArea(2);
?>
“`⑤mt_rand(乱数)
“`
echo mt_rand(1, 100);
“`#文字列に関する関数
①strlen(文字列の長さ)“`
Type:JSONに、INSERTができない人へ
### 現状の問題
MySQL version 5.7.30MySQLで、type:jsonの列を作ったのですが、なぜかinsertできませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276138/886390c8-6c89-5ecf-d44e-5877e19c959a.png)
### 解決策: json_encodeを使用するまず、テーブルを作ります。(type:jsonの列あり)
“`
create table sample_json(id int, json_data json);
“`次にこうすればinsertできるはずなのですが..できない。なんでや..
“`
insert into sample_json values(1, ‘{“from” : “Japan”, “name” : “Taro”}’);
“`↓ 修正
“`
insert into sample_json values(1, “{\”from\”: \”Japan
【初心者】PHPで文字列の中に特定の文字列が含まれているのかチェック
# 文字列の中に特定の文字列が含まれているのかチェックしたい
以前、文字列の中に特定の文字が何回含まれているのか?という記事を書いた。
https://qiita.com/wakiyo1017/items/177f3312c720bf01e6ef
今回は、文字列の中に特定の「文字列」が含まれているのかチェックするためにはどうするか学んだ。
プログラミングを勉強していて面白い事は、答えがいくつもあってそのどれもが正解だというところなのだけれど、この方法もいくつもあるらしい。
そのうち二つを残しておく。
## strpos
“`php
$str = “abcdefg”;
$s = “cd”;
echo strpos($str, $s);
// 以下出力結果
2
“`
strposは特定の文字列が含まれている場合は、その文字列が何文字目から含まれているかを返してくれるようだ。
含まれていない場合は、false を返してくれるので、含まれているかを確認するためには、if文を用いて…“`php
if(strpos($str, $s) === false){
echo “nothin
Cake PHP4.2でDependency Injectionができるようになっていた!
PHPのフレームワークは数多くありますが、その中でも特に人気を誇っているのはLaravelでしょうか。
そんなLaravelの魅力の一つといえば、DIの仕組みが内蔵されていて引数をタイプヒントするだけで気軽に注入できるところにあるでしょう。Cake PHPは長らくDIの仕組みを持っていませんでしたが、近日(12/20)リリースされた4.2.0からDIの機能が追加されました。
注意:Cake PHPのDIは現在実験的な機能です。
# 最も簡単なDIの例
実際にどのように記述していくのか見ていきましょう。まずはコントローラーは以下の通りです。
“`php
【PHP】Laravel bladeビューのリファクタリング。implode, nullチェック, 変数をタグとして出力
個人用メモです。
rowspanおよびcolspan属性があるth/tdタグの生成に関するコードをリファクタリング。各処理の意味と実行内容を理解する。##目次
1. [リファクタリング前のコード](#リファクタリング前のコード)
2. [問題点](#問題点)
3. [リファクタリング完了後のコード](#リファクタリング完了後のコード)
4. [リファクタリングの処理内容](#リファクタリングの処理内容)
5. [class属性に不要なスペースの除去](#1-class属性に不要なスペースの除去)
6. [rowspanとcolspanの除去とダブルクオテーションの追加](#2-rowspanとcolspanの除去とダブルクオテーションの追加)
7. [属性がないときの無駄なスペース除去](#3-属性がないときの無駄なスペース除去)
8. [implodeメソッド](#implodeメソッド)
9. [nullチェック(if文とissetメソッド)](#nullチェックif文とissetメソッド)
10. [変
[php]usort関数について
#usort関数について
自身で勉強していて、わかりにくかった部分であるusortに関して、まとめてみました。“公式php.net“から
“`
usort ( array &$array , callable $callback )
“`
と説明されています。* **&$array** :入力する配列
* **$callback**: コールバック関数要するに、第1引数で並び変えたい配列を渡し、第2引数で並び替える順番を定義した比較関数を入れるということです。
#使い方* 今回使う配列
“`
$data = [
[‘name’ => ‘taguchi’, ‘score’ => 80],
[‘name’ => ‘kikuchi’, ‘score’ => 60],
[‘name’ => ‘hayashi’, ‘score’ => 70],
[‘name’ => ‘tamachi’, ‘score’ => 60],
];
“`* 自らが定義した比較関数
“`
function scores($a, $b) {
if($a[
Advance Custom fields(ACF)の出力方法まとめ
#Advance Custom fields(ACF)とは
wordpressでカスタム投稿が出来るプラグインで一番有名だと思います。
[Advance Custom fields](https://ja.wordpress.org/plugins/advanced-custom-fields/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/24d526b7-8a88-1e81-fbb5-b36ff361c5ca.png)管理画面での設定方法は簡単なのですが、出力が少し難しいので覚書しておきます。
#テキスト出力例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/26967f91-4ec2-b40a-eb08-7d7e08151c0d.png)
“`php
LION BLOGのカテゴリページを昇順にする方法
新しくカテゴリ一覧を作成するページはたくさんあったのですが、すでにウィジェットで設定してあるカテゴリを日付の昇順にする方法がすぐに見つけられなかったのでメモします。
[参考にさせていただいたページ](https://pct.unifas.net/cms/wordpress/155/)
function.php
後半にウィジェットごとのコードがあるので以下に追記“`php:function.php
// カテゴリページ
elseif(is_category()) {
$cat = get_queried_object();
//ここから追記
$q_p =’order=ASC&cat=’ . $cat_id;
query_posts($q_p);
//ここまで
if($cat -> parent != 0){
$ancestors = array_reverse(get_ancestors( $cat -> cat_ID, ‘category’ ));
foreach($ancestors as $ancestor){
$str.=’
【PHPとRuby記述の比較】記述方法がどんな風に違うんだろう?と疑問を持っている方へ
__◆目的__
Rubyを学習後、ProgateにてPHPの学習を始めたのですが、コマンドが微妙に違う…こんがらがりそう(; ;)…ということで、特に気になったのを後学のためまとめました。
RubyとPHPどれくらい書き方が違うんだろう…?という疑問を持っている初学者の方の「ふ〜ん」になればと思います。__**今後も地道に更新していきます__
__◆目次__
__1)foreach と each の比較・・・繰り返し処理
2)連想配列とハッシュの比較
1. 連想配列・ハッシュから値を取得
2. 値を取り出して空の配列に代入 => 新しい配列を作る
3)クラス
1. クラスの外で値を代入
2. __constructメソッドとinitializeメソッド
3. __constructメソッドとinitializeメソッド ~引数を与える~
__# 1) foreach と each の比較・・・繰り返し処理
“`【PHP】繰り返し処理(foreach).php
文字列の長い順番に揃えたい
たとえばtwitterのツイートの中のユーザIDをリンクにしたいとき
@hoge, @hogehoge があると、@hogeを置換するときに@hogehogeのほうも置換されちゃう
これを防ぐには、ユーザIDを抽出した後に文字数の大きい順番にソートする必要があるこのロジックは文字列置換・文字列探索の業務でちょくちょく必要になる
“`PHP
$ary = [‘hogehoge’, ‘hoge’, ‘aiueo’];usort($ary, ‘lrsort’);
function lrsort ($a, $b) {
$la = strlen($a);
$lb = strlen($b);
if ($la < $lb) return 1; if ($la > $lb) return -1;
return 0;
}
“`
AdMobの売上データをデータベース連携する
こんにちは。Link-U入社2年目のたくやんです。
今年1年何をやったかなぁと思い返すと、そういやAdMobの売上データを取得するのにそこそこ苦労したなぁと思い、
備忘録も兼ねて書き残したいと思います。##AdMobとは
>AdMob – Wikipedia
>https://en.wikipedia.org/wiki/AdMobGoogleが提供するアプリ内広告です。審査が厳し目とかいう噂を聞いたり聞かなかったり。
##前準備
#### credentials.jsonの取得
https://console.developers.google.com/apis/credentials
から認証情報を登録すると、credentials_jsonファイルをダウンロードすることができる。#### oauth2のインストール
“`
curl https://storage.googleapis.com/oauth2l/latest/linux_amd64.tgz | tar zx -C /usr/local/bin –strip-components 1
cp c
Lightningにメニュー項目を追加(function.php/header.php)
#wordpressの無料テーマLightining
管理画面で設定できるメニュー箇所を追加する方法をご紹介完成系は
有料版にあるヘッダー右上のヘッダーサブメニューを無料版Lightningに追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/01e90c14-9686-813c-7e59-a4bf44f01b42.png)ダッシュボードにも、ちゃんとメニューバーの設定項目が出力されます!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/1e3ebeab-3ecf-ef92-4da7-011b25163c1f.png)#functino.phpに追記
以下を追記
・header_sub : 任意の文字列
・ヘッダーサブメニュー : 外観>メニューで表示される任意の文字列“`php
register_nav_menus(array(
‘he
pChart を PHP7 対応させる方法
#概略
pChart を、PHP7 で動かすとエラーが出て正常に動いてくれません。これの暫定的な対応策です。とりあえず動いてくれればいいや、という状況向け。#詳細
こんな感じのエラーが出ます。
“`php
Fatal error: Uncaught Error: Cannot use string offset as an array “pchart”
“`エラーの原因としては、変数を後から配列扱いすると PHP7 でエラーが出るようになったのが原因なので、pChart.class と pData.class を何箇所か修正すると正常に動くようになります。
“`php
$this->Data = “”;
$this->DataDescription = “”;
“`↓ 以下のように初期化宣言を直す。
“`php
$this->Data = array();
$this->DataDescription = array();
“`以上。
空白検知(ゼロ幅スペースなどに対応した完全版) in JS/PHP
空白や改行だけの文字列の検知には正規表現の`\S`で検知したり、`String.prototype.trim()`([MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/trim))を使用することがありますが、これだとゼロ幅スペース([Wikipedia](https://ja.wikipedia.org/wiki/ゼロ幅スペース))などの一部の空白文字は通過してしまいます。そこで、より多くの文字を検知するコードを書いたので紹介します。
## JavaScriptの場合
“`javascript
const word = “判別する文字列”;
const reg = /^[\u0009-\u000d\u001c-\u0020\u11a3-\u11a7\u1680\u180e\u2000-\u200f\u202f\u205f\u2060\u3000\u3164\ufeff\u034f\u2028\u2029\u202a-\u202e\u2061-\u2063
phpにおけるhtml文のプルダウンメニューでループを回す方法
#ソースコード
簡潔な書き方
“`
CakePHP デバッグの方法一覧
CakePHPを扱うにあたって色々な手段でデバッグを行ったのでまとめました。
PHP基本のデバッグ
–**degug**
基本中の基本、引数に変数やマジックメソッドを使う等使い方は無限。**exit**
処理を抜ける。
画面がリダイレクトする処理等のデバッグをする際に、debug()と組み合わせて使う事が多い。**stacktrace**
スタックトレースの出力、下記のようにすると見やすい。“`
echo ‘'; stackTrace(); echo '‘;
“`ORM関連
–
参考:
https://book.cakephp.org/3/ja/orm/retrieving-data-and-resultsets.html#table-find-list>debug($query) SQL とバインドパラメーターが表示されます。結果は表示されません。
>sql($query) DebugKit がインストールされている場合に限り、最後に描画された SQL を表示します。
>debug($query->all()) ResultS
CakePHP データ取得の方法(get・find)
CakePHPのデータ取得の方法についてまとめました。
そもそもTable/Entityとは
–
こちらが参考になりました。
https://qiita.com/tatsuo-iriyama/items/87097069013ac9df1ed9**テーブル**
データのコレクションにアクセスして、レコードの追加・更新・削除やリレーションの定義のためのオブジェクト**エンティティ**
個々のレコードを指す、レコードの振る舞いや機能を定義する
カラムに対しても処理可能上記を踏まえてCakePHPのデータ取得とは
–
エンティティを検索したりロードしたりする事を指している。
(データ取得の手段として挙げるメソッドでコレクションとエンティティを返している)メソッド一覧
–**get**
単一のエンティティーを取得する
データが見つからなければ404エラーを返す
この中でカスタムファインダーを使用することも可能“`
$article = $articles->get($id, [
‘finder’ => ‘translations’,
]);
“`**f
【PHP】データの暗号化・復号化
PHPで動作するデータの暗号化・復号化のメモです。
通信時やDBのアクセス時などで使用します。# 動作環境
PHP 7.3.11# プロトコル
AES-256-CBCを使用します。#暗号化
“`phpconst AES_KEY = ‘tekitou_key’;
const AES_IV= ‘tekitou_iv’;/**
* 暗号化
* @param string $data
* @return string
*/
function encrypt($data)
{
return $data === null ? null :
openssl_encrypt($data, ‘AES-256-CBC’, AES_KEY, 0, AES_IV);
}
“`#復号化
“`phpconst AES_KEY = ‘tekitou_key’;
const AES_IV= ‘tekitou_iv’;/**