細 文字列「__FORCETOC__」を「{{#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 pag… |
|||
| (同じ利用者による、間の3版が非表示) | |||
| 361行目: | 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: | {{#seo: | ||