📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
(同じ利用者による、間の9版が非表示)
132行目: 132行目:
<br>
<br>
==== 浮動⼩数点数 ====
==== 浮動⼩数点数 ====
===== 浮動小数点の概要 =====
浮動⼩数点数は、⼩数を含めた数を表現できる型である。<br>
浮動⼩数点数は、⼩数を含めた数を表現できる型である。<br>
浮動小数点数(float型)のサイズは、AMD64またはx86により依存する。<br>
浮動小数点数(float型)のサイズは、AMD64またはx86により依存する。<br>
149行目: 150行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
===== 浮動小数点のキャスト =====
<code>floatval</code>関数 / <code>doubleval</code>関数は、他のデータ型から浮動小数点型に変換する。<br>
どちらも同様の機能であるが、<code>floatval</code>関数を使用した方がよい。<br>
<syntaxhighlight lang="php">
$num = "100";  // 文字列型として宣言
$num1 = floatval($num);
echo gettype($num1). PHP_EOL;  // floatと出力
$num2 = doubleval($num);
echo gettype($num2). PHP_EOL;  // doubleと出力
</syntaxhighlight>
<br>
変換の型を指定して明示的に変換する。<br>
どちらも同様の機能であるが、float型としてキャストした方がよい。<br>
<syntaxhighlight lang="php">
$num = "3.14";  // 文字列型として宣言
$num1 = (float)$num;
echo gettype($num1). PHP_EOL;  // floatと出力
$num2 = (double)$num;
echo gettype($num2). PHP_EOL;  // doubleと出力
</syntaxhighlight>
<br>
その他のデータ型から浮動小数点にキャストする。<br>
このキャスト結果は、整数型とほぼ同じである。<br>
<syntaxhighlight lang="php">
var_dump((float)"aaa");    // キャストの結果 : 0  (文字列の場合は、全て0となる)
var_dump((float)"999aaa");  // キャストの結果 : 999  (文字列 + 数値の場合は、文字の部分が削除されてキャストされる)
var_dump((float)"123");    // キャストの結果 : 123
var_dump((float)"999.99");  // キャストの結果 : 999.99
var_dump((float)"4E2");    // キャストの結果 : 400
var_dump((float)true);      // キャストの結果 : 1
var_dump((float)false);    // キャストの結果 : 0
var_dump((float)null);      // キャストの結果 : 0
</syntaxhighlight>
<br>
==== NaN ====
==== NaN ====
数値演算の結果が定数NaNで表される値になることがある。<br>
数値演算の結果が定数NaNで表される値になることがある。<br>
179行目: 219行目:
===== 半⾓文字と全⾓文字の組み合わせ =====
===== 半⾓文字と全⾓文字の組み合わせ =====
<code>mb_convert_kana</code>関数による⽂字列の変換は、⽇本語を扱う上で重要である。<br>
<code>mb_convert_kana</code>関数による⽂字列の変換は、⽇本語を扱う上で重要である。<br>
PHP 8.2以降では、オプションの組み合わせが無効な場合、例外<code>ValueError</code>がスローされる。<br>
<br>
以下の例では、<code>mb_convert_kana</code>関数の第2引数において、次に示す変換をしている。<br>
* K
*: 半⾓カタカナを全⾓カタカナに変換する。
* a
*: 全⾓英数字を半⾓英数字に変換する。
* s
*: 全⾓スペースを半⾓スペースに変換する。
<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
|+ 使用可能な変換オプション
|-
! style="background-color:#66CCFF;" | オプション
! style="background-color:#66CCFF;" | 説明
|-
| r || 全角英字を半角英字に変換する。
|-
| R || 半角英字を全角英字に変換する。
|-
| n || 全角数字を半角数字に変換する。
|-
| N || 半角数字を全角数字に変換する。
|-
| a || 全角英数字を半角数字に変換する。
|-
| A || 半角英数字を全角英数字に変換する。<br>(<code>a</code>オプション、<code>A</code>オプションに含まれる文字は、U+0022, U+0027, U+005C, U+007Eを除く U+0021 - U+007E の範囲である)
|-
| s || 全角スペースを半角スペースに変換する。<br>(U+3000 -> U+0020)
|-
| S || 半角スペースを全角スペースに変換する。<Br>(U+0020 -> U+3000)
|-
| k || 全角カタカナを半角カタカナに変換する。
|-
| K || 半角カタカナを全角カタカナに変換する。
|-
| h || 全角ひらがなを半角カタカナに変換する。
|-
| H || 半角カタカナを全角ひらがなに変換する。
|-
| c || 全角カタカナを全角ひらがなに変換する。
|-
| C || 全角ひらがなを全角カタカナに変換する。
|-
| V || 濁点付きの文字を一文字に変換する。<br><br><u>※注意</u><br><u>このオプションは、<code>K</code>オプション、または、<code>H</code>オプションと共に使用する必要がある。</u>
|}
</center>
<br>
<syntaxhighlight lang="php">
  // ⽇本語⽂字列の変換
  // ⽇本語⽂字列の変換
  // (変換前)全⾓の1(全⾓スペース)あ(全⾓スペース)半⾓のイ
  // (変換前)全⾓の1(全⾓スペース)あ(全⾓スペース)半⾓のイ
188行目: 278行目:
  echo $d. PHP_EOL; // 1 あ イ
  echo $d. PHP_EOL; // 1 あ イ
  </syntaxhighlight>
  </syntaxhighlight>
<br>
以下の例では、次に示す変換をしている。<br>
* K
*: 半⾓カタカナを全⾓カタカナに変換する。
* a
*: 全⾓英数字を半⾓英数字に変換する。
* s
*: 全⾓スペースを半⾓スペースに変換する。
<br>
<br>
これにより、半⾓文字と全⾓文字を統⼀する。<br>
これにより、半⾓文字と全⾓文字を統⼀する。<br>
279行目: 361行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>
== 変数展開 ==
文字列をダブルクオーテーションで囲む場合やヒアドキュメントの場合、文字列に変数が存在する時、変数は格納されている値に置換される。<br>
このような処理を変数展開と呼ぶ。<br>
<br>
以下の例では、文字列に変数nameが記述されている。<br>
この文字列を出力する時、"こんにちは。高橋 さん"と変数に格納されている値に置き換えて出力される。<br>
<syntaxhighlight lang="php">
$name = '高橋';
echo "こんにちは。$name さん";
</syntaxhighlight>
<br>
変数展開において、変数が記述された位置の後ろにアルファベットが続く場合は、どこまでが変数名なのか区別できない場合がある。<br>
以下の例では、変数colornamecolorを変数展開されてしまう。<br>
<syntaxhighlight lang="php">
$colorname = 'red';
echo "frame is $colornamecolor";
</syntaxhighlight>
<br>
このように、どこまでが変数名なのか区別できない場合や配列変数等を使用する場合は、変数名を<code>{}</code>で囲んで記述する。<br>
<syntaxhighlight lang="php">
$colorname = 'red';
echo "frame is ${colorname}color";
</syntaxhighlight>
<br>
<u>※注意</u><br>
<u>シングルクオーテーションで囲んだ文字列で変数を記述しても、変数展開は行われない。</u><br>
<br><br>
== 変数の削除 ==
==== unset関数 ====
unset関数は、変数や配列の要素を破棄するための関数である。<br>
<br>
<u>これは、nullを代入するのとは異なり、変数そのものを削除することに注意する。</u><br>
変数を完全に破棄するため、メモリが解放される。<br>
<br>
最も一般的な使用方法は、単純な変数の破棄である。<br>
<syntaxhighlight lang="php">
$name = "John";
unset($name);  // $nameという変数が破棄される
// 複数の変数を同時に解除
$a = 1;
$b = 2;
unset($a, $b); // 複数の変数を1度に破棄することもできる
// unset後にisset関数で確認する場合、falseを返す
isset($a)
</syntaxhighlight>
<br>
配列の場合、特定の要素を削除することができる。<br>
<u>ただし、要素を削除しても配列のインデックスは自動的には詰められない。</u><br>
<syntaxhighlight lang="php">
$fruits = ["apple", "banana", "orange"];
unset($fruits[1]);  // "banana"が削除される
                    // 結果: array(0 => "apple", 2 => "orange")
</syntaxhighlight>
<br>
また、セッション変数を破棄することもできる。<br>
例えば、ユーザのログアウト処理等で使用されることが多い。<br>
<syntaxhighlight lang="php">
unset($_SESSION['user_id']);  // 特定のセッション変数を破棄
</syntaxhighlight>
<br>
オブジェクトのプロパティを削除することもできる。<br>
<syntaxhighlight lang="php">
class User {
    public $name;
}
$user = new User();
$user->name = "John";
unset($user->name);  // プロパティを削除
</syntaxhighlight>
<br>
関数内でグローバル変数をunsetする場合は、<code>global</code>キーワードを使用しない限り、関数内でのunsetはローカルスコープにのみ影響を与える。<br>
<syntaxhighlight lang="php">
$global_var = "test";
function removeGlobal() {
    global $global_var;  // globalキーワードが必要
    unset($global_var);
}
</syntaxhighlight>
<br>
大規模なアプリケーションでメモリ管理を最適化する場合にunset関数が重要な役割を果たす。<br>
特に、大きな配列やオブジェクトを扱う場合、不要になったデータを適切にunsetすることにより、メモリ使用量を抑えることができる。<br>
<br>
==== array_splice関数 ====
なお、配列の要素を削除する場合の代替手段として、array_splice関数がある。<br>
<u>これは、インデックスを自動的に詰めることができる。</u><br>
<syntaxhighlight lang="php">
$array = [1, 2, 3];
// 出力: [1, 3]
array_splice($array, 1, 1);  // インデックスを詰めて削除
</syntaxhighlight>
<br>
配列の要素を削除するだけでなく、置換、挿入等の様々な配列操作に柔軟に対応できる便利な関数である。<br>
unset関数と異なり、インデックスが自動的に詰められる特徴があるため、連続したインデックスを維持したい場合に特に有効である。<br>
<br>
array_splice関数の基本的な構文を以下に示す。<br>
<syntaxhighlight lang="php">
// 基本的な構文
array_splice(array &$array, int $offset [, int $length = null [, mixed $replacement = array() ]]);
</syntaxhighlight>
<br>
* 第1引数
*: 操作対象の配列
*: 参照渡しで渡すため、元の配列が直接変更される。
*: <syntaxhighlight lang="php">
$fruits = ['apple', 'banana', 'orange', 'grape'];
array_splice($fruits, 2); // 配列fruitsが直接変更される
</syntaxhighlight>
*: <br>
* 第2引数
*: 変更を開始する位置を指定する。
*: 正の数の場合は配列の先頭、負の数の場合は末尾からカウントする。
*: <syntaxhighlight lang="php">
$colors = ['red', 'blue', 'green', 'yellow'];
array_splice($colors, 1);    // 先頭から1番目以降を削除
                            // 出力: ['red']
array_splice($colors, -2);  // 末尾から2つを削除
                            // 出力: ['red', 'blue']
</syntaxhighlight>
*: <br>
* 第3引数
*: 省略可能
*: 削除する要素の数を指定する。
*: 省略する場合は、開始位置から配列の末尾まで全ての要素が対象となる。
*: <syntaxhighlight lang="php">
$numbers = [1, 2, 3, 4, 5];
array_splice($numbers, 1, 2);  // 1番目の位置から2つの要素を削除
// 結果: [1, 4, 5]
</syntaxhighlight>
*: <br>
* 第4引数
*: 省略可能
*: 削除した箇所に新しい要素を挿入できる。
*: <syntaxhighlight lang="php">
$pets = ['dog', 'cat', 'bird'];
array_splice($pets, 1, 1, ['hamster', 'rabbit']);
// 結果: ['dog', 'hamster', 'rabbit', 'bird']
</syntaxhighlight>
<br>
実際の使用例として、配列の特定の位置に要素を挿入する場合がある。<br>
<syntaxhighlight lang="php">
$menu = ['coffee', 'tea', 'juice'];
// lengthを0にすることで、要素の削除なしで挿入できる
// 出力: ['coffee', 'latte', 'tea', 'juice']
array_splice($menu, 1, 0, 'latte');
</syntaxhighlight>
<br>
この関数の特徴は、削除された要素を戻り値として返すことである。<br>
<syntaxhighlight lang="php">
$items = ['A', 'B', 'C', 'D'];
$removed = array_splice($items, 1, 2);
// $removedは ['B', 'C']
// $itemsは ['A', 'D']
</syntaxhighlight>
<br><br>
== Nullable型 ==
PHPの型宣言において、?<型名>の記法は、その変数がデータ型またはnullを許容することを示す。<br>
これは、Nullable型と呼ばれ、PHP 7.1以降で導入された機能である。<br>
<br>
例えば、?string型は、string|nullと同じ意味になる。<br>
また、デフォルト値として<code>null</code>を指定することができる。<br>
<br>
ただし、nullでない場合は、必ず文字列型である必要がある。<br>
<br>
<syntaxhighlight lang="php">
function example(?string $section = null)
{
    if ($section === null) {
      // $sectionがnullの場合の処理
      return "Section is null";
    }
    // $sectionが文字列の場合の処理
    return "Section is: " . $section;
}
// 両方とも有効な呼び出し
echo example(null);        // "Section is null"
echo example("Chapter 1");  // "Section is: Chapter 1"
</syntaxhighlight>
<br><br>
== スーパーグローバル変数 ==
スーパーグローバル変数は、スクリプトのどこからでもアクセスできる。<br>
ただし、セキュリティ上の理由から、入力値は必ず適切なバリデーションやサニタイズを行ってから使用する必要がある。<br>
<br>
==== $_GET ====
URLパラメータからデータを取得する。<br>
例: example.php?name=taroの場合、$_GET['name']は"taro"となる。<br>
<br>
==== $_POST ====
POSTメソッドで送信されたフォームデータを取得する。<br>
ファイルアップロードやパスワード等、セキュアなデータ送信に使用する。<br>
<br>
==== $_SESSION ====
セッション変数を格納する。<br>
ユーザのログイン状態管理等に使用する。<br>
<br>
==== $_COOKIE ====
クライアント側に保存されたCookie情報を取得する。<br>
ユーザ設定の保存等に使用する。<br>
<br>
==== $_SERVER ====
サーバ情報やリクエストの詳細を取得する。<br>
<br>
主な要素<br>
* $_SERVER['REQUEST_METHOD']
*: HTTPメソッド
* $_SERVER['HTTP_USER_AGENT']
*: ブラウザ情報
* $_SERVER['REMOTE_ADDR']
*: クライアントのIPアドレス
<br>
==== $_FILES ====
アップロードされたファイルの情報を取得する。<br>
ファイル名、サイズ、一時保存先等の情報を含む。<br>
<br>
==== $_REQUEST ====
$_GET、$_POST、$_COOKIEの内容を含む。<br>
<br>
<u>※注意</u><br>
<u>セキュリティ上、直接的な使用は推奨されない。</u><br>
<br>
==== $_ENV ====
環境変数の値を取得する。<br>
サーバ設定や環境設定値へのアクセスに使用する。<br>
<br>
==== $GLOBALS ====
グローバルスコープで定義された全ての変数を参照する。<br>
他のスーパーグローバル変数も含む。<br>
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:Web]]
[[カテゴリ:Web]]