PHP関連のことを調べてみた2023年02月03日

PHP関連のことを調べてみた2023年02月03日
目次

PHPのforeach文で一部だけ2次元の連想配列からキーだけを取り出す方法

# はじめに
備忘録
タイトルの通りです。
どなたかのお役に立てれば幸いです。

# foreach文で一部だけ2次元の連想配列からキーを取り出す
例えば、以下のような2次元の連想配列があったとします。
“`php
$array = [
“aaa” => true,
“bbb” => “foo”,
“ccc” => [
“ddd” => “this”,
“eee” => “is”,
“fff” => “sample”,
“ggg” => “array”
]
];
“`
この場合は以下のように書くことで全ての次元からキーだけを取り出すことができます。
“`php
$key_array = [];
foreach ($array as $key1 => $value1) {
array_push($key_array, $key1);
if (gettype($value1) == “array”) {
foreach ($value1 as $key2 =

元記事を表示

【WordPress】the_contentで取得する本文にカスタムフィールドの値を入れる方法

プラグインなしでSEO実装をする案件にて。

カスタム投稿+カスタムフィールドの構築で、SEO対策として記事本文の最初の130文字をdiscriptionに入れてほしいという要望がありました。

本来なら、`th_content` から130文字抜くだけなので簡単ですが、カスタムフィールドだとそれができませんね。

なので、カスタムフィールドの値を全部取ってきて、`th_content` の中に自動で入れ込み、そこから130文字抜き出そうという実装です。

ポイントなのが、**柔軟コンテンツをループして1つのテキストにまとめる** です。

“`php
// the_contentで取得する本文に、カスタムフィールドの値を含める
function set_contents($post_id) {
if(!wp_is_post_revision($post_id) && get_post_type($post_id) === ‘contents’) {

remove_action(‘wp_insert_post’, ‘set_contents’);

元記事を表示

【初心者の勉強記録】MAMPを使わずに、Laravel上でphpMyAdminを使えるようにしました。

:::note warn
PS:私は日本語ネイティブではありませんので、文法ミスや分かりにくいところがあれば大目に見てください(ぺこり)
:::

## 前書き

私はphpMyAdminをもう使い慣れたので、どのようにDocker環境でphpMyAdminを立ち上がるかを紹介します。

PHPの学習をしていた段階で、実はMAMPが愛用でしたが、ただ無料版はPHPのVersionを二つしか選べないですね。

初めてLaravel+MAMPを環境構築していた時に、選べる一番最新のバージョンでも古すぎて、逆にLaravelを使えなくなってしまいました。

StackOverflowで色々な方法を試行錯誤しても全く効かないということで、あの時の焦りがもう忘れません。最後にやむをえず、MAMP PROの無料試用版の力を借りてやっと接続ができました。

ということで、今回の転職ポートフォリオを作成し始めた段階でDockerのみで実装してみようと思います。

## 接続方法
Laravelのプロジェクトを一旦インストールした後、次にDBの接続と.envの初期設定を行います。

この方法は非常に初

元記事を表示

Laravelインストール時に出たzipのエラー解決備忘録

# 環境
・OS : Windows11
・Composer : 2.5.1
・XAMPP : 8.2.0

# エラー
`composer create-project laravel/laravel:^8.* test`のコマンドで
インストールしようとした際に
`The zip extension and unzip/7z command are both missing`が下図のようにたくさん出て怖い
![2023_02_01_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240612/e3cba72f-5f46-8afa-3d8b-6fba9659127f.png)

# 解決法
・`php.ini`をVScode等で開く  `C:\xampp\php\php.ini`にある

・`zip`を文字検索などで検索すると`;extension=zip`が出てくる

・この`;`を外し、`extension=zip`にして保存する
![php.ini – php.png](https://q

元記事を表示

【PHP】チューニングまとめ

# 処理速度まとめ
## 配列追加
:::note info
[]で追加する方がarray_pushよりも2倍早い
:::
### [ ]で追加
“`php
$val[] = “りんご”;
“`
### array_pushで追加
“`php
$val = arrray_push(“りんご”);
“`

元記事を表示

【PHP】function内で使うreturnについて(早期リターンとは)

#### 早期リターンとは
function 中で return を使うことで if などによるネストを減らすことができるテクニックのこと。

#### if文と言えば
if(条件1){
trueの場合の処理
}else{
falseの偽の場合の処理
}

上記のイメージが強かったが、returnを使うことで

if(条件1){
return true;
}
return false;
}

と表記することができる。

#### なぜelse以下が省略されているか
>「関数内で呼び出されると、return文は***即座にその関数の実行を停止し、引数を関数の値として返します。***」(phpリファレンスより)

つまりtrueの場合、上記の例では true が返された時点で関数の実行が止まるので、それ以下の処理は実行されないということ。
そのためelse以下の記述は省略され、本来falseの場合に実行される処理がif文の外に出されている上記のような形式が成立する。

##

元記事を表示

【Laravel】artisan コマンドが対話形式で使えるようになる

## 何が実現するのか?

2023 年 1 月 23 日に以下の PR がマージされました。

https://github.com/laravel/framework/pull/45629

そして 2023 年 2 月 1 日の v9.49.0 で上記変更分がリリースされました。

これにより、以下が実現します。

– **`make:*` コマンドが対話形式で使えるようになる**
– **既存のコマンドを対話形式に簡単に対応できるようになる**

一つずつ見ていきましょう。

## `make:*` コマンドが対話形式で使えるようになる

多くの Laravel ユーザーにとって真っ先に恩恵があるのはこれでしょう。今回の PR により、`make:*` コマンドが対話形式に対応しました。

例えば `make:model` だと、これまでは引数が足りない場合以下の通りにエラーが発生しました。

![](https://user-images.githubusercontent.com/4977161/212221423-c6b62de6-cf87-47fc-b55f-752c3

元記事を表示

You are in ‘detached HEAD’ state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch.

“`bash
Note: switching to ‘v5.5.28’.

You are in ‘detached HEAD’ state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

git switch -c

Or undo this operation with:

git switch –

Turn off this advice by

元記事を表示

【php】CSVファイルのBOMを削除する方法

PHP(Laravel)のシステムにUTF-8形式のCSVファイルをアップロードする際、BOMを削除する方法です。

BOM付きの場合とBOM付きでない場合、両方に対応する必要がありました。

## 解決策

“`php:
$text = preg_replace(“/^\xEF\xBB\xBF/”, ”, $text);
“`

## 参考:BOMとは

– Byte Order Markの略
– テキストの先頭に付く
– CSVファイルを保存する際、Excelのバージョンや保存形式により、BOMが付く場合と付かない場合がある
– 16進法で「EF BB BF」と表される
– 「ファイルがUnicodeで書かれているか」や「[エンディアン](https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3)の形式」を判別するために付いている(※ただし、UTF-8ではエンディアンは関係ない)

## 余談:`�`について

UTF-8の状態でデバッグした際、BOMは`�

元記事を表示

【DDD】ドメインサービスとはなにか?Laravelでどう実装するのか。

## はじめに
業務でドメインサービスを扱う場面が出てきたので、改めて記事にして整理していきます。書籍等ではJavaでの実装が多いと思いますが、今回はLaravelで実装しているので、Laravelを普段使用している人には分かりやすい内容になっているのではないかと思います

## ドメインサービスとは
エリック・エヴァンスは著書『エリック・エヴァンスのドメイン駆動設計』において、ドメインサービスを下記のように記載しています。
> ドメインから生まれる概念の中には、オブジェクトとしてモデル化すると不自然なものもある。こうしたドメインで必要な機能を**エンティティ**や**値オブジェクト**の責務として押しつけると、モデルに基づくオブジェクトの定義を歪めるか、意味のない不自然なオブジェクトを追加することになる。
> (中略)
> ドメインにおける重要なプロセスや変換処理が、**エンティティ**や**値オブジェクト**の自然な責務でない場合、その操作は、**サービス**として宣言される独立したインターフェースとしてモデルに追加すること。モデルの言語を用いてインターフェースを定義し、操作名が

元記事を表示

Amazon Linux 2 で PHP7.4 から 8.1 にアップグレードする方法

以前書いた記事の PHP 7.4 -> PHP 8.1 バージョンアップ版です。(Amazon Linux Extra を使用する前提)

以前の記事 -> [Amazon Linux 2 で Nginx, MariaDB, PHP7.2 から 7.4 にアップグレードする方法
](https://qiita.com/katzueno/items/0f2de17b719e9d16c749)

Concrete CMS をインストールしているサーバーで

– PHP7.4.x -> PHP8.1.x

にアップデートした時のコマンドメモです。

めっちゃくちゃざっくりです。

アップグレード元のバージョンが違ったり、レポジトリが違ったりあって、
いろんなケースの手順をまとめてます。

**PHP+MySQL のサーバーに詳しい人しか参考にしないでください。**

## 旧バージョンの Amazon Linux Extra のレポジトリを Disable

“`
sudo amazon-linux-extras disable php7.4
“`

## 新バージョンのレポジトリ

元記事を表示

独学エンジニア TV視聴時間 アウトプット

はじめに

独学エンジニアというサービス内で出題された、テレビの視聴時間クイズについて、アウトプットもかねてメモを残します。

※著作権の関係で一部改変しています。

問題

要件定義

たかし君は、受験勉強がはかどらない事に悩んでいます。テレビの視聴をやめれば学習時間が増えるのはわかっているのですが、なかなかやめることができません。
そこで、たかし君は、一日のテレビの視聴分数を記録することから始めよう考え、プログラムを書くことにしました。
テレビを見るたびにチャンネルごとの視聴分数をメモしておき、一日の終わりに記録します。テレビの合計視聴時間と、チャンネルごとの視聴分数と視聴回数を出力してください。

条件

  • 同じチャンネルを複数回見た時は、それぞれ分けて記録すること。
  • チャンネル:数値を指定すること。1〜12の範囲とする(1ch〜12ch)
  • 視聴分数:分数を指定すること。1〜1440の範囲とする
  • チャンネルごとに視聴分数と視聴回数は一
元記事を表示

hey siri で 指定したurlからjsonを取得

# ショートカットアプリを開く

iphoneのショートカットアプリを開き、マイショートカットを選択。

![nagare1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31338/105f2747-c5cb-0904-337f-7de5a36fee40.png)

右上の プラス をタップして新規ショートカットの作成

![nagare2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31338/4092e9d2-cae6-f07c-f103-a065af43822e.png)

# ショートカットの構築

アクションの追加について、

一番下部の赤枠Appおよびアクションを検索に () 内の値を入力し検索すると
アクションが表示される。
次のアクションの提案というのが表示されるが、無視する

・指定したURLの内容を取得
(URLの内容を取得)

・今回は json をリターンしているので、 json内のresの

元記事を表示

Qiita Night ~PHP~ で「PHPアプリケーションにおけるアーキテクチャメトリクスについて」というLTをしてきた

2023/01/25(水)に[Qiita Night~PHP~](https://increments.connpass.com/event/270421/)というイベントでLTしてきましたのでその報告です。

## モチベーション

PHPerKaigi2023に以下のようなプロポーザルを提出していたのですが、残念ながら採択ならず、悔しいな~と思っていたところ、たまたまLTの機会を頂いたのでアーキテクチャメトリクスについてお話ししてきました。

https://fortee.jp/phperkaigi-2023/proposal/047f399d-8045-4e1b-a626-72ef4ce3f6ec

発表内容の元ネタはこちらの書籍です。

https://www.oreilly.com/library/view/software-archite

元記事を表示

PHP コードメモ。

1. 日付を出す。
“`php
date_default_timezone_set(‘Asia/Tokyo’);

for ($i=0; $i<366; $i++): $time = strtotime( $i . ' day'); $day = date('n/j(D)', $time); echo $day . '
‘;
endfor
“`
2. 曜日を出す。
“`php
$week_name = [‘日’, ‘月’, ‘火’, ‘水’, ‘木’, ‘金’, ‘土’];

date_default_timezone_set(‘Asia/Tokyo’);
$week = date(‘w’);
echo “今日は$week_name[$week]曜日です。”;
“`

元記事を表示

Laravelでアプリを作成してみた【Blogアプリ】

## phpMyAdmin とは?

– ブラウザ上でMySQLデータベースを管理できるツール
➡︎ 本来はコマンドでMySQLを操作するがMAMPに最初から入っている

## データベース とは?

– データを保管できる場所

## なぜデータベースを使うのか?

– データの管理・整理・検索ができる
– 複数人で同時に利用できる

## データベースを管理するシステム(DBMS)

– データベースの操作及び管理を行うシステム
➡︎ 現在の主流は、『リレーショナルデータベース管理システム(RDBMS)』

※ リレーショナルデータベース管理システム(RDBMS)の中に『MySQL』がある

## SQL言語

– データベースの操作を行うための言語
– データの追加・更新・削除・検索を行う

## SQL文の種類

– データ定義(DDL): 主にテーブル操作
CREATE文:テーブルを作る
DROP文:テーブルを削除
ALTER文:テーブルを更新
JOIN文:テーブルを結合

– データ定義(DML): 主にテータ操作
SELECT文:テーブルを取得
INSERT文:テーブルを

元記事を表示

エンジニア1年たった頃にようやくPHPとJavaScriptの「this」の挙動の違いを理解できた話

### はじめに

一年たった頃に、ようやくふわっとしていた`this`について理解できた時があったので、その気付いたときの記録と`this`について僕なりの言葉で解説したいと思います。

### 1年目まで勘違いしていた点

言語に関係なく、`this`はブロックを抜けた外のスコープを指していると思っていた。

※今回はPHPのコードを読んでいる際に間違いに気付きました。

### 結論(正解)
:::note warn
`PHP`と`JavaScript`(アロー関数の定義と通常の`function`定義)で違いがあり、ややこしいのでご注意を。
:::

– **PHPの`$this`**
– クラスインスタンス(自分自身)を指している。
– **JavaScriptの`this`**
– アロー関数の場合
– アロー関数は関数定義時(定義場所)の1つ前のコンテキスト(PHPみたいな挙動)
– 通常の`fuction`の場合
– 関数呼び出し元(関数呼び出し時)がコンテキストになる

### 具体例(PHPの$this挙動の

元記事を表示

PHP 8: 新機能を活用してより現代的な開発体験を手に入れよう

## 概要
PHP 8は、2021年11月にリリースされたPHP言語の重要なアップデートです。これは、言語全体のパフォーマンスと使いやすさを向上させることを目的とした新機能や改善が導入されています。以下はPHP 8の主要な新機能のいくつかです:

1.ジャストインタイム(JIT)コンパイル:この機能により、PHPコードをリアルタイムでマシンコードにコンパイルすることで、PHPコードのパフォーマンスが大幅に向上します。

2.ユニオン型:この機能により、開発者は単一の変数に複数の型を指定することができます。

3.マッチ式:switch文の構文としての新しいマッチ式は、複雑な条件ロジックを書くための短く読みやすい方法を提供します。

4.名前付き引数:この機能により、開発者は名前を付けて関数に引数を渡すことができ、コードが読みやすく保守性が向上します。

5.属性:これは、他の言語のアノテーションに似たソースコード内でメタデータを宣言するための新しい構文です。

6.Nullsafe演算子:null値を処理するための新しい演算子で、コードが短くなり、null参照例外が防げます。

7.S

元記事を表示

PHP + VSCode + Docker + Xdebugでコーディングテストor競技プログラミング用の環境構築

# 概要
転職活動の際、コーディングテストを受ける機会があるかと思われます。その際、デバッグしながらアルゴリズムを作成した方が、変数内の動きが分かりやすくなり、アルゴリズムの作成もスムーズになると思ったので作成しました。今回は、その構築手順について簡単に説明します。

# 開発環境
“`sh
Docker version 20.10.17, build 100c701
Docker Compose version v2.7.0
“`

# ディレクリー構造
ディレクトリーの構成は下記の構造となっています。
“`
.
├── .vscode/
│ └── launch.json
├── conf/
│ └── php-xdebug.ini
├── src/
│ └── index.php
├── .gitigrone
├── docker-compose.yml
├── Dockerfile
└── REASME.md
“`

# VScodeの設定
VScodeの拡張機能で、`PHP Dubug`をインストールしておいて下さい。
![説明.png](https://

元記事を表示

Web開発に挑戦! PHP入門

## 概要
PHP (Hypertext Preprocessor) は、Webサイトを作成するために使用されるサーバーサイドスクリプト言語です。

1. 環境構築
XAMPPまたはWAMPを使用して、PHPとWebサーバー(Apache)、データベース(MySQL)をインストールします。
1. スクリプト作成
PHPスクリプトを作成するには、テキストエディター(Sublime Text、Notepad++など)を使用します。
PHPスクリプトは、HTMLコードと同様にWebページに埋め込まれますが、拡張子が「.php」です。
1. PHPの構文
PHPの代表的な構文は、変数の定義、if文、for文、while文、関数などです。
PHPスクリプトは、「」タグで終了します。
1. データベースとの連携
PHPは、MySQLなどのデータベースと連携することができます。
MySQLと連携するための代表的な関数には、mysqli_connect、mysqli_query、mysqli_fetch_assocなどがあります。

これらが、PHPの基本的な内容で

元記事を表示

OTHERカテゴリの最新記事