PHP関連のことを調べてみた2022年09月12日

PHP関連のことを調べてみた2022年09月12日

【計算結果が正しくない!?】案外知らない、計算誤差の話

# はじめまして
63歳ですが、プログラム書いてます。
30年以上昔に知った話を、最近、また耳にしましたので、ちょっとご紹介させていただきます。

# 実数計算が正しいか、9種類の言語で試しました。
今回試したのは、linux 標準の bc(計算機)、PHP、python3、ruby、perl、node.js、C++、go、fortran95 の9つの言語です。
C++ のコンパイルは “`gcc ru88.c -lm -o ru88.out“`、“`gcc ru88-boost.cpp -lstdc++ -o ru88-boost.out“`、
fortran95 のコンパイルは “`gfortran -O3 -o ru88.exe ru88.f95“`、
“`gfortran -O3 fmsave.o fm.o fmzm90.o fm_interval.o fm_doubleint.o fm_quadint.o fm_quadreal.o fm_rational.o -o ru88-FM.exe ru88-FM.f95“`、
go は “`go run ru88.

元記事を表示

Illuminate\View\ViewExceptionのエラーが発生して画面遷移ができなくなる問題

# はじめに

laravelのバージョンを5.8から6.xにアップデートした後、なぜか画面遷移ができなくなりました。
その原因がなかなかわからず手こずったので、メモを残しておきます。

## 環境

ubuntu 18.04
php 7.4.29

“`composer.json
{
“require”: {
“php”: “^7.4.29”,
“bensampo/laravel-enum”: “^1.23”,
“fideloper/proxy”: “^4.0”,
“google/apiclient”: “^2.0”,
“guzzlehttp/guzzle”: “^6.3”,
“intervention/image”: “^2.5”,
“laravel/framework”: “^6.0”,
“laravel/tinker”: “^1.0”,
“laravelcollective/html”: “^6.0”,
“ph

元記事を表示

Laravelによるページネーションの書き方

# ページネーション(pagination)とは

– 検索結果やデータベースの一覧画面などを適度な長さで分割して表示する仕組み
– 次の画像のように各ページへのリンクを並べることでアクセスしやすくなります
– 10件ずつ表示する、50件ずつ表示するなど、表示数をカスタマイズできます

見本:Google検索結果より
![スクリーンショット 2022-09-12 7.56.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2765288/07b5f2c5-eea9-ced2-7897-4fed90bb0680.png)

## 環境について
データベース内に`user`というテーブルが存在する仮定で以下の手順は進みます

## 作成方法

### データベースのテーブル情報を取得するモデルを作成します

“`php3
namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較

# Python

https://qiita.com/Morio/items/e8aed85346c0055beea7

# Ruby

https://qiita.com/Morio/items/3ac5cac9ace7e9ddbdb4

# PHP

https://qiita.com/miriwo/items/d1b5d5ece4f16c7b5985

# Java

https://qiita.com/Co_Pilot/items/7c59410cd90be4cf06d8

# JavaScript

https://qiita.com/w-tdon/items/f3ecb29dc9350f2f2e8d

# Perl

https://perlzemi.com/blog/20080327120662

元記事を表示

Trelloに日付リストを自動で生成する【Trello API】

# ✏️ 概要
Trelloをカレンダーレイアウトにしたら 日付リストの生成を自動化したくなってしまったので、
今回はPHPを用いてTrelloのAPIを叩いてリストを自動生成してみます。

こんな感じでスクリプトを叩くと自動でTrelloのボード上にリストが生成されます ?

![Sep-01-2022 19-37-55.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/468787/c904943b-c470-8ade-70f3-3af4c10dbc60.gif)

※ 3年前に書いた記事をリライトして公開しています

# ? 準備をする

### 開発者向けAPIキーの取得

まずは以下のURLにアクセスして**開発者向けAPIキー**を取得します

[? 開発者向けAPIキー取得ページ](https://trello.com/1/appKey/generate)

![image.png](https://qiita-image-store.s3.ap-no

元記事を表示

なに? チェックボックスオフでも確実にPOSTする方法があるやと?

## ある日の業務中
ぐっちー
「checkboxってオフの時postされんからオフの処理いちいち書くのめんどくさいな~」
先輩
「それならええ方法があるがな」

ぐっちー
「ほんまですか? 教えてください!」
先輩先輩
「1回しか言わんから永久保存版な」

ぐっちー
「了解です!」
## 一般的な書き方
“`index.html


“`

“`index.php
$in = $_POST

//初期化
$hoge = 0;
if(isset($in[‘hoge’])){
$hoge = intval($in[‘hoge’]);
}else{
$in[‘hoge’] = $hoge;
}

$list = array();
$list = search_list($in);

元記事を表示

【PHP】ひらがな化APIを使ってみた

# 初めに
Excelにて漢字にふりがなをつけようとしたが、CSVをインポートしたデータやWEBページからコピペしたテキストには自動でふりがなが付かないことがわかった。そのため、代替手段として[gooラボ](https://labs.goo.ne.jp/)の[ひらがな化API ](https://labs.goo.ne.jp/api/jp/hiragana-translation/)を使用することにした。

>[リファレンス](https://labs.goo.ne.jp/api/jp/hiragana-translation/)より引用
>ひらがな化APIはリクエストで送られた日本語文字列を、ひらがな もしくは カタカナ による記載に変換します。

## 環境
– Mac OS12.4(M1)
– PHP 8.1.2

## パラメータ
* app_id(必須項目) => 利用登録をし、取得する
* request_id => リクエストID、省略可
* sentence(必須項目) => 解析対象テキスト
* output_type (必須項目) =>hiragana(ひらがな化

元記事を表示

tsunagi-functionsでSymbolブロックチェーンのトランザクションを自由自在に作ろう!(PHP編)

この記事は、以下に紹介したtsunagi-functionsのPHP実装版です。

https://qiita.com/nem_takanobu/items/4b5d67fe9eb80ae35433

トランザクション構築の内部処理やノードへの通知方法については以下の記事もご参考ください。

https://qiita.com/nem_takanobu/items/d69f86487fce527dbc29

Symbolブロックチェーンをよく知らないという方はこちらで速習することができます。

https://github.com/xembook/quick_learning_symbol

# テスト

テストスクリプトを以下に置いています。実行することができればそのロジックをそのまま実装に利用することができます。

#### test_0_1.php

https://github.com/xembook/tsunagi-sdk/blob/main/php/test_0_1.php

“`json:composer.json
{
“require”: {

元記事を表示

Laravel 8 へアップグレードしてからシーダーを使う際の変更

## はじめに

Laravel 6から8へアップグレードした際にアップグレード自体は問題なくできたのですが、
シーダーの実行につまずいたので残しておきます。

## 事象
シーダーを実行すると以下のようなエラーが出ました。
“`
$ php artisan db:seed
“`
“`
Illuminate\Contracts\Container\BindingResolutionException

Target class [DatabaseSeeder] does not exist.
“`

# 変更箇所
Laravel 8へアップグレードした後にシーダーを使うための変更箇所をまとめます。

### 1. composer.jsonの変更

変更前
“`json:composer.json
“autoload”: {
“psr-4”: {
“App\\”: “app/”,
},
“classmap”: [
“database/seeds”,

元記事を表示

【個人開発】旅のしおりを作って仲間とシェアできるサイトを制作しました

LAMP開発の学習のため、WEB上で旅のしおりページを作れるサービスを制作しました。

# どんなサービスか
サイトはこちら → http://oshitabinote.com/main.php
![thumbnail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1974587/bd688229-9f76-9baa-11c3-96a7e324a38d.png)
* WEB上に旅のしおりページが作成でき、ページ内では旅程と参加メンバーのプロフィールが自由に登録・編集・表示ができます
* 旅ごとにユニークなURLが発行され、リンクを知っていれば誰でもアクセスができるので、仲間と気軽にページのシェアができます
* 一般的な旅行+オタクの方々の遠征に使ってもらいたいので、ちょっとしたオタ活特化要素があります

# 開発リポジトリ
https://github.com/emuroku/oshitabi_note

# 制作目的
* これまで学習したフロント・バックエンドの実装やLAMP環境開発の実践練習をするこ

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのwhile文の比較

# Python

https://qiita.com/Morio/items/10d33f6dbb0845ae5038

# Ruby

https://qiita.com/Hashimoto-Noriaki/items/f406bcfb00e79e3937d0

# PHP

https://qiita.com/miriwo/items/2c2aa77d5de66c074ec5

# Java

https://qiita.com/takahirocook/items/05bfe37bb4ba64f3a78e

# JavaScript

https://qiita.com/kaz7991/items/7f98cc17c4df9ab6a009

# Perl

https://perlzemi.com/

元記事を表示

使用中のLaravelのバージョンを確認するコマンド

“`
php artisan –version
“`
または
“`
php artisan -v
“`

元記事を表示

LaravelのJetstreamで新規ユーザ登録時のデフォルトチームを指定する

## 前提条件
– Laravel8.x
– Jetstream Team版導入済み

Teamを事前に複数作成しておいてください

以下を編集します。

app>Actions>Fortify>CreateNewUser.php

“`php:CreateNewUser.php
protected function createTeam(User $user)
{
$user->ownedTeams()->save(Team::forceCreate([
‘user_id’ => $user->id,
‘name’ => explode(‘ ‘, $user->name, 2)[0].”‘s Team”,
‘personal_team’ => true,
]));

}
“`

を以下のようにします。

“`php:CreateNewUser.php
protected function createTeam(User $user)

元記事を表示

標準関数で配列操作

見ました。要は正規化されていないデータ構造を結合しようという問題。

https://qiita.com/panda-chibi/items/9f5eaaed10e4a204d784

自分ならどう書くだろうか。

## foreachを使わない場合

PHPの標準関数にgroup_by的なものがあればもうちょっと簡潔に書ける気がしないでもないが、なくても難しくはない。

“`php
1, ‘name’ => ‘イワーク’, ‘place’ => ‘渓谷,洞窟’, ‘level’ => 10, ‘technique’ => ‘岩雪崩’],
[‘id’ => 1, ‘name’ => ‘イワーク’, ‘place’ => ‘砂漠,山頂’, ‘level’ => 20, ‘technique’ => ‘岩石砲’],
[‘id’ => 2, ‘name’ => ‘ハガネール’, ‘place’ => ‘鉱山,地中’, ‘level’ => 10, ‘technique’ => ‘メテオドライブ’],
[‘i

元記事を表示

【PHP】PHPの高度な配列操作

# コード
“`PHP
1,’name’=>’イワーク’,’place’=>’渓谷,洞窟’,’level’ => 10,’technique’=>’岩雪崩’],
[‘id’=> 1,’name’=>’イワーク’,’place’=>’砂漠,山頂’,’level’ => 20,’technique’=>’岩石砲’],
[‘id’=> 2,’name’=>’ハガネール’,’place’=>’鉱山,地中’,’level’ => 10,’technique’=>’メテオドライブ’],
[‘id’=> 2,’name’=>’ハガネール’,’place’=>’丘陵,窪地’,’level’ => 20,’technique’=>’アイアンローラー’],
];
$res = [];
foreach($data as $value){
if(empty($res[$value[‘id’]])){
$result = [];
$res[$value[‘id’]] = [

元記事を表示

オリジナルアプリ作成断念

プログラミングスクールで作っていたオリジナルアプリですが、やむなく作成を断念することになりました。

# 経緯
スクレイピングの処理(野球の成績を取得にかかる)において、打者と投手の成績を同時に取得することが出来ず、
データベースに保存する作業も別々になってしまい、コードの記述が困難なため。
## 気持ちの面では
一からコードを書かなければいけないため、労力が必要以上にかかり、それにプラスしてスキルの追及が必要で頭が追い付かなかったため。

# 問題点
コードを書く段階で講師の人からダメ出しが多く、考えさせられることが多いのと正確なコードを教えてくれるわけでもありませんでした。
それがずっと続き、結局あまり進まなかったことが大きな要因です。
## 要件定義から失敗
オリジナルアプリは特に決まったものはなく何でもよかったんですが、その中でプロ野球の該当チームの選手の成績をスクレイピングでとってくるという初心者には難しいものを選んでしまったのも原因と言えます。

# これからどうするか
正直なところ、続きをやる予定はありません。第二弾もあるので、そちらに移っていくでしょう。

# 最終コー

元記事を表示

【Laravel】Controllerメソッドの戻り値が意図した値で返却されない

# 環境

– Macbook Air 2020
– Laravel 9.27.0
– PHP 8.0.23
– sail v1.15.4
– Composer 2.4.1

# 1.状況

LaravelにてAPIを構築しておりGETメソッドでエンドポイント `/reservation/status/{gym_id}/{machine_id}` にアクセスすると、 `ResrvationController.php` 内の `getReservationStatus` メソッドで対象のレコードの数を取得したい。

“`php:api.php
Route::prefix(‘reservation’)->group(function () {
Route::get(‘/{reservation_id}/{gym_id}/{machine_id}’, [ReservationController::class, ‘nextReservationExists’]);
Route::get(‘/status/{gym_id}/{machine_id}’, [Reserva

元記事を表示

PHPをコーディングする際はこれらを気を付けよう!

## はじめに

プログラムを組んでいく中で、気を付けなければいけないコーディングは多々あります。
知識としては蓄えていても実践だと見落としてしまうものです。
初心者時代のエピソードを交えつつご紹介します!

## 目次
– [その処理はすでに関数があるかもしれない](#その処理はすでに関数があるかもしれない)
– [小数点を扱う際は丸め誤差に注意](#小数点を扱う際は丸め誤差に注意)
– [条件分岐の判定に使う関数の返却値に注意](#条件分岐の判定に使う関数の返却値に注意)
– [現行のPHPバージョンで使える関数でも将来的に削除される関数は使わない](#現行のphpバージョンで使える関数でも将来的に削除される関数は使わない)

### その処理はすでに関数があるかもしれない

設計書 「ユーザー名が英数字で構成されているか、それ以外かで処理を分ける」

私「preg_match関数で英数字かどうか判定して処理を分けよう」

※【英数字 正規表現】で検索しました。

“`PHP
$pattern = ‘/^[a-zA-Z0-9]+$/’;
if (preg_ma

元記事を表示

GitHub ActionsにLaraStanを追加する

## TL;DR
以下のソースをリポジトリの`.github/workflows/larastan.yml`に配置すれば導入できます。
このとき、ブランチ名の先頭が`TEST-`から始まるものだけ解析対象になります。

“`yml:.github/workflows/larastan.yml
name: LaraStan
on:
# GitHubにPushしたときに実行
push:
branches:
# ブランチ名が”TEST-“で始まるもののみを対象とする
– TEST-*

jobs:
phpstan:
# Ubuntuの最新版を利用する
runs-on: ubuntu-latest
steps:
# リポジトリの最新ファイル1世代分だけをチェックアウト
– uses: actions/checkout@v2
with:
fetch-depth: 0

# PHP環境のセットアップ
– name: Setup PHP

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの例外処理の比較

# Python

https://qiita.com/imuimu/items/7f27d156dd0f6507803b

# Ruby

https://qiita.com/k-penguin-sato/items/1a6c8096effccb19565a

# PHP

https://qiita.com/wakahara3/items/bcadef53367097765c82

# Java

https://qiita.com/ts7i/items/d7f6c1cd5a14e55943d4

# JavaScript

https://qiita.com/andota05/items/fc1e340642be42ca47c0

# Perl

https://perlzemi.com/blog/201

元記事を表示

OTHERカテゴリの最新記事