PHP関連のことを調べてみた

PHP関連のことを調べてみた

Laravel 多対多のテーブル設計と中間テーブルについて(初学者向け)

## はじめに
Laravelの学習中に、1対多のリレーションは組むことができたけれど、多対多の場合のテーブル設計はどう考えれば良いのか、また中間テーブルについてイメージが掴めなかったため、自分なりにまとめてみました。

## 作成するテーブル
以下の映画テーブルと俳優テーブルを例に考えてみます。

#### 映画テーブル
| id| タイトル (title) |公開年 (release_year) |
|:-:|:-:|:-:|
| 1 | インセプション | 2010 |
| 2 | タイタニック | 1997 |
| 3 | アベンジャーズ | 2012 |

#### 俳優テーブル
| id | 名前 (name) |性別 (gender)|
|:-:|:-:|:-:|
| 1 | レオナルド・ディカプリオ |male|
| 2 | ロバート・ダウニー・Jr |male|
| 3 | スカーレット・ヨハンソン |female|

1つの映画に複数の俳優が出演します。また1人の俳優は複数の映画に出演します。
つまり2つのテーブルの関係性は、多対多とな

元記事を表示

単純交換法(バブルソート)

## 単純交換法(バブルソート)とは

デーアを並べ替える整列アルゴリズムの一つ。
隣り合ったデータを交換する処理を繰り返して、全体を整列する。
実行速度は遅い。

### 対象データ

以下の配列を昇順に並べ替える

“`php
$array = [5, 3, 4, 1, 2];
“`

### フローチャート

変数`i`は比較する要素のうち右側の要素の添字を表す変数。
変数`k`は既にに確定した要素の添字。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/e9d0e64b-8539-7b23-1b6f-3fa5374540a4.png)

#### 手順

①右端の要素から順に、隣り合ったデータを昇順に並べ替える
②左端の要素から一つずつ順番に、データが昇順に整列していく

元記事を表示

単純選択法(選択ソート)

## 単純選択法(選択ソート)とは

データを並べ替える整列アルゴリズムの一つ。
一番小さなデータを選択して、先頭から順に並べ替えていく。

### 対象データ

以下の配列を昇順に並べ替える

“`php
$array = [12, 13, 11, 14, 10];
“`

### フローチャート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/c88b3f08-a06d-6137-52ee-79a01f9a52c5.png)

#### 手順

①探索範囲の最小値を探す
②探索範囲の最小値を先頭要素と交換する

元記事を表示

PHPでiPhoneユーザーとAndroidユーザーを自動判別するサンプルコード

PHPでiPhoneユーザーとAndroidユーザーを自動判別してリンク先を分けるシステムを作成することは可能です。以下にその実装方法を示します。

PHPコード
以下の例では、User-Agent ヘッダーを解析して、ユーザーがiPhoneまたはAndroidデバイスを使用しているかどうかを判別し、それに基づいてリダイレクトするコードを示します。

“`PHP

元記事を表示

WP Offlaod Media Lite S3で画像アップロードが出来なかった…。

# WP Offlaod Media Lite S3で画像アップロードが出来なかった…。 ~php-gd~

AWS初心者向けのハンズオン形式の講座で、WordPress上の画像をS3に保存する処理がありましたが、どういうわけだかS3にアップロードできませんでした。

「AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得」
~~蛇足:AWSのコンソールやWP Offload Mediaの設定画面がハンズオン動画と異なるので苦労します…。~~
https://www.udemy.com/share/101Yby3@7BjNdcYUfFZEZkJbOQ2PFRKD2znhh2E07weMeqSegaewGTSl6u29J1MBsfp7HyIBPw==/

以下の投稿を参考に見直したところ、php関連パッケージのインストールで不足分が判明しました…。

https://qiita.com/kyusyu_syoyu/items/a1c183e4afb59788a67a

## php-gd
結論、

元記事を表示

【PHP】フレームワークFlowで多言語に対応したページを作成する

# 初めに
FlowではL10n(Localization)やI18n(Internationalization)に対応したページを作成することができます。今回は、Flowにおける対言語対応の方法をまとめていきます。

# Flowにおける多言語対応処理
Flowにおける多言語対応は以下の2ステップで行います。
* **文言を定義したメッセージファイルを言語(日本語、英語など)ごとに作成**
* **言語を指定し、対応するメッセージファイルを利用する**

翻訳は、以下の2つのクラスを使って行います。

* **Localeクラス**
* **Translaterクラス**

## Localeクラス
日本語や英語など、どの言語を使うかの情報を持つクラスです。

“`php
$locale = new Locale(‘ja’);
“`

## Translaterクラス
実際に翻訳を行うクラスです。
Localeを引数に、対応した文言を返すメソッドなどが定義してあります。

# 多言語対応やってみた
ということで、実際にやってみましょう。
今回は以下の二種類を試します。
* **

元記事を表示

PHPのヒアドキュメントで作成したSQLクエリが急に効かなくなった

# 環境
| 名称 | バージョン |
|:-:|:-:|
| PHP | 7.4.26 |

# 問題
フレームワークなしのPHPで作成されたWebシステムを機能改修している中で、ヒアドキュメントを使ってSQLクエリを作っていた箇所があった。
別の担当者がその部分のソースを触って、その人がPJから去った後に自分が動作確認したら、触ったソースが関与している処理が機能していなかった。

# 解決方法
誤入力で入れたのであろうインデント1個に不幸にされてた\(^o^)/

“`test.php

元記事を表示

【PHP】ローカル変数とグローバル変数

# ローカル変数とグローバル変数
PHPの変数には**ローカル変数**と**グローバル変数**の2種類がある。
その2つの違いを解説していきたい。

## ローカル変数

**ローカル変数**とは、決められた範囲内(ローカルスコープ)でしか扱えない変数のことを言う。

“`php:ローカル変数

“`

Undefined variable という警告が表示されてしまった。
なぜかというと、関数user()内で定義されている変数nameと、関数外で定義されている変数nameは**全くの別物として扱われている**ためである。
関数user()内で定義されて

元記事を表示

[PHP8.4]MacOSでPHP 8.4を成功裏にインストールするためのチュートリアル

公式発表によると、[PHP 8.4](https://www.servbay.com)は2024年11月21日にリリースされる予定です。これは3つのアルファバージョン、3つのベータバージョン、および6つのリリース候補を通じてテストされます。

この大規模なアップデートは、PHPに一連の最適化と強力な機能をもたらします。私たちは、より良いコードを書き、より強力なアプリケーションを構築できるようにする最も興味深いアップデートと変更点を紹介することに興奮しています。

準備はできましたか?それでは、探索してみましょう!

### PHP 8.4の新機能

**1. DOM拡張機能がHTML5をサポート**

PHP 8.4のDOM拡張機能は、HTML5の解析とシリアライゼーションをサポートすることで大幅にアップグレードされました。これにより、HTML5特有のタグやJavaScriptに埋め込まれたHTMLの扱いに頭を悩ませることはなくなります。新しいDOM\HTMLDocumentクラスを使用するだけで、HTML5コンテンツが正しく処理され、現代のWeb標準に準拠します。
文字列からHTML

元記事を表示

ハッシュ探索法

## ハッシュ探索法とは

探索しやすいようにあらかじめ関数を使ってデータを格納しておき、探索の際は格納するのに使った関数を使ってデータを探す探索法。

### データを格納するアルゴリズム

#### 対象データ

“`php
$arrayD = [12, 25, 36, 20, 30, 8, 42];
“`

#### ハッシュ関数
ハッシュ値 = `$arrayD`のデータ % 11

#### ハッシュ化したデータを格納する配列

0が11個の配列

“`php
$arrayH = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
“`
#### フローチャート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/2c864156-27d4-ac94-f10b-681119f28ee7.png)

#### 処理結果

結果として、以下のような配列が作られる
“`php
$arrayH = [42, 12, 0, 25, 36, 0, 0

元記事を表示

Build a network tunnel using Python and the LAMP(PHP) stack.

## Getting Started
Hosting services based on the LAMP stack (Linux + Apache + MySQL + PHP), commonly known as shared hosting, can be obtained at an affordable price in any country. If you are lucky, you can get the infrastructure for one-hundredth the cost of acquiring a virtual server.

I was interested in creating a proxy (also known as a VPN) using shared hosting, and I recently succeeded. I considered an implementation similar to [Shadowsocks](https://shadowsocks.org/) as the most ideal and

元記事を表示

頻繁にランダム番号が重複しないようにするクラス.

頻繁にランダム番号が重複しないようにするクラスです.
ご自由にコピペでご使用ください.

https://github.com/taoka-toshiaki/randomizeClass

“`php:randomizeClass.php

元記事を表示

STYLYがPHPカンファレンス香川2024でのPico4とApple Vision Proの体験展示してみた:準備とスキルトランスファー編

こんにちは、uechanです。

2024年5月に開催されたPHPカンファレンス香川2024に参加し、STYLYのデモ展示を行いました。
本記事では、デモ展示の下準備として行ったスキルトランスファーや技術のブラッシュアップについて詳しく紹介します。

## イベント概要
PHPカンファレンス香川は、PHPを中心としたWeb技術に関するカンファレンスです。PHPユーザーやPHPに興味がある、あるいはWeb技術全般に興味がある方々が集まり、さまざまなトークセッションや交流を行うイベントを目指しています。
自分はSTYLYのスポンサー展示を行うために参加しました。

## 展示内容の紹介
今回は、Pico4を使ったセッション機能でのMR/VR作品の体験と、
Apple Vision Proを使った作品の体験を展示しました。
Apple Vision Proは四国初上陸です!!

元記事を表示

急いですぐにLaravelの作業がしやすい環境をDockerのDebianで作る

今回は急いでLaravelの動く環境が欲しいので急いですぐになんとかします!

## すぐ着手

まずDockerをパパッと起動します。

“`bash
cd oisogi-laravel
docker run -it –rm -p 8080:8080 -v .:/opt debian
“`

必要なものまとめてインストールします。

“`bash
apt-get update
apt-get -y install php php-sqlite3 php-curl php-fdomdocument composer
“`

MySQLのためだけにdocker-composeする時間はもったいない印象です。
時短のため.envをSQLite3で使うよう一旦ちょっと変えます。
gitを使っている場合はここで`.gitignore`によって無視されるパスを指定するのが時短ポイントです。

`DB_`の部分は例えばこんな感じです。

“`bash
DB_CONNECTION=sqlite
DB_DATABASE=database/db.sqlite
“`

ほぼいつものコマンド

元記事を表示

WordPressにおける動的ルーティングの実装方法

# はじめに

WordPressで動的ルーティングを実装する方法のサンプルです。

# 問題

WordPressの修正案件。
地域の出し分けをカスタム投稿でやってほしいとのこと。
差分少ないし、記事を何十も作るのダルメシアンだったので、動的ルーティング使って解決。
ただLaravelやReactの感覚でいたから、予想の10倍は苦労した。

# 解決方法

“`functions.php

function custom_rewrite_rule()
{
add_rewrite_rule(
‘^area/([^/]*)/([^/]*)/?’,
‘index.php?pagename=city&prefecture=$matches[1]&city=$matches[2]’,
‘top’
);
}
add_action(‘init’, ‘custom_rewrite_rule’);

function custom_query_vars($vars)
{
$vars[] = ‘prefecture’;
$vars[] = ‘city’;
$vars[] =

元記事を表示

STYLYがPHPカンファレンス香川をスポンサーしてみた。

# PHPカンファレンス香川のスポンサー出展の経緯

 AppleVisionProが2/2に発売され、いろいろなルートを使って会社で数台調達することができました。そのときに、「そういやPHPカンファレンス関西に行くし、その時に被ってったら、たぶん注目されて、おもろいことになるから借りていこう」と思いつき、@afjk から会社のAppleVisionProを借りて、単身PHPカンファレンス関西に突っ込むことを画策しました。
 この時、参加登録はしてたものの、登壇ではなかったので、まぁどうすっかなーという気持ちはありつつ、あまり不安もありませんでした。というのも、こういうカンファレンスでは登壇の裏でLTイベントをしていることが多く、そういう時には飛び込みもOKだという感触がありました。したがって、飛び込めれば何とかなるだろう。という気持ちで突っ込みました。で、そのようなLTイベントが予定通り?発生していたので、とりあえず適当な自己紹介をして、

**まぁ、俺が誰であるかとか、どの会社の人間であるかは興味ないと思うんだ。
でも、俺は10日前にアメリカでしか販売されてない最新のApple

元記事を表示

怠けるための必需品!2024年の生産性向上のための効率的な開発ツール

> プログラマーであることは、絶え間ないコードの流れと要求で挑戦的です。仕事とリラックスのバランスを取ることは難しいですが、作業負荷を軽減する強力なツールがあります。「適材適所」—この記事は、便利なツールを発見するのに役立ちます。

### DevDocs – オフラインドキュメントのコンパニオン

[DevDocs](https://devdocs.io/)は、オフラインAPIドキュメントブラウザで、多言語対応しており、開発者に技術ドキュメントへの迅速かつ効率的なアクセスを提供します。フロントエンドからバックエンド、モバイル開発まで、公式ドキュメントを統合し、洗練されたユーザーフレンドリーなインターフェースを提供します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782463/8b2f7f75-8f28-cbd1-39d5-855539096af8.png)

### ServBay – 開発者の夢

[ServBay](https://www.servbay.com)は、ウェ

元記事を表示

二分探索法(バイナリサーチ)

## 二分探索法(バイナリサーチ)とは

探索する範囲を半分に絞り込みながら探索を進めるアルゴリズム。
あらかじめ昇順か降順に整列されているデータが対象となる。

### 対象データ

以下のように昇順か降順に整列されているデータ
“`php
$array = [11, 13, 17, 19, 23, 29, 31];
“`

### フローチャート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/8a75e4d2-1df8-47f8-51be-13b0cc8d445f.png)

### 解説

以下の変数を用意する
`head`:先頭のデータの添字
`center`:真ん中のデータの添字
`tail`:末尾のデータの添字

①真ん中の要素を選ぶ
→`(head + tail) / 2`で求め、`center`へ代入する
②真ん中と目的のデータを比較する
→データが目的のデータと一致した場合は、探索終了
→データが目的のデータと一致しない場合は③へ移る
③探索の

元記事を表示

WordPressでJavaScriptを埋め込む方法(再掲)

## はじめに
今回はWordPressでモーダルを実装する際にJavaScriptをどこに埋め込めばいいか悩んだのでその解決策をまとめる。
## 問題点
WordPressでJavaScriptのコードをどのphpファイルに埋め込めばいいのか。
## 解決策①
footer.phpの“`“`の直前に埋め込むことで解決する。
ただしこれは非推奨な方法な模様。
“`footer.php




“`

## 解決策②
もう一つの方法がheader.phpの“`head“`タグ内の“`“`より上に外部ファイルを読み込む関数を記述するというもの。
“`header.php

元記事を表示

mysqliを使ってPHPからMySQLに接続する方法

# はじめに
`mysqli_connect`を用いて、MySQLに接続する方法と切断する方法のみを説明します。
本記事では、データの取得や挿入などは触れていません。

# 事前知識
### mysqliとは
`mysqli`(MySQL Improved)とは、PHPでMySQLデータベースとやり取りするための拡張機能のこと。
### MySQLデータベースとは
MySQLデータベースは、データを効率的に保存、管理、検索するためのシステムのこと。
ユーザー情報、商品情報、ブログ投稿など、ウェブサイトの様々なデータを保存するために使われる。
# mysqliを使ってデータベースに接続する
### `mysqli_connect`を使ってデータベースに接続する
`mysqli_connect` 関数を使ってMySQLデータベースに接続する。
“`php
mysqli_connect(
$hostname,
$username,
$password,
$dbname
);
“`
上のように、ホスト名、ユーザー名、パスワード、データベース名の順で書く。

続いて、接続を確認するために、変

元記事を表示

OTHERカテゴリの最新記事