📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の16版が非表示) | |||
| 11行目: | 11行目: | ||
格納する時は、インデックスと値をペアで格納し、取得する時は、インデックスを指定することで指定の値を取得することができる。<br> | 格納する時は、インデックスと値をペアで格納し、取得する時は、インデックスを指定することで指定の値を取得することができる。<br> | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
$ | // 1つずつ定義 | ||
$ | $result1[0] = 85; | ||
$ | $result1[1] = 92; | ||
$result1[2] = 68; | |||
print $result1[0]; | |||
print $result1[1]; | |||
print $result1[2]; | |||
// まとめて定義 | |||
$result2[0] = [85, 92, 68]; | |||
print $ | print $result2[0]; | ||
print $ | print $result2[1]; | ||
print $ | print $result2[2]; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
| 26行目: | 34行目: | ||
$result[2] = 68; | $result[2] = 68; | ||
for($i = 0; $i < 3; $i++) | for ($i = 0; $i < 3; $i++) { | ||
{ | print $result[$i]; | ||
} | |||
// count関数を使用する場合 | |||
$size = count($result); | |||
for ($i = 0; $i < $size; $i++) { | |||
print $result[$i]; | print $result[$i]; | ||
} | } | ||
| 89行目: | 102行目: | ||
例えば、以下のように記述する。<br> | 例えば、以下のように記述する。<br> | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
$result[0] | $result[0] = 72; | ||
$result[1] = 82; | $result[1] = 82; | ||
| 97行目: | 110行目: | ||
[0] => 72 | [0] => 72 | ||
[1] => 82 | [1] => 82 | ||
</syntaxhighlight> | |||
<br><br> | |||
== 配列のサイズ変更 == | |||
PHPでは、配列のサイズを変更する方法は複数存在する。<br> | |||
<br> | |||
==== 要素の追加 ==== | |||
* 配列代入による方法<br>完全に新しい配列に置き換える場合は、配列代入を行う。 | |||
<syntaxhighlight lang="php"> | |||
// 1つずつ定義する場合 | |||
// (特定の位置の値を更新しやすい) | |||
$result[0] = 72; | |||
$result[1] = 52; | |||
print_r($result) | |||
$result[2] = 96; | |||
$result[3] = 20; | |||
print_r($result) | |||
// []演算子を使用して配列を再定義する場合 | |||
$result = [72, 52]; | |||
print_r($result); | |||
$result = [72, 52, 96, 20]; // 配列の再定義 (サイズ変更) | |||
print_r($result); | |||
</syntaxhighlight> | |||
<br> | |||
* array_push関数を使用する方法<br>これは、末尾に要素を追加するものである。<br><br>末尾に要素を追加する場合は、array_push関数や[]演算子を使用する。 | |||
<syntaxhighlight lang="php"> | |||
$result = [72, 52]; | |||
array_push($result, 96, 20); // 最後尾に96と20を追加 | |||
// 追加後は、$result = [72, 52, 96, 20] となる | |||
</syntaxhighlight> | |||
<br> | |||
* []演算子を使用する方法<br>これは、末尾に要素を追加するものである。<br><br>末尾に要素を追加する場合は、array_push関数や[]演算子を使用する。 | |||
<syntaxhighlight lang="php"> | |||
$result = [72, 52]; | |||
$result[] = 96; // 96を末尾に追加 | |||
$result[] = 20; // 20を末尾に追加 | |||
</syntaxhighlight> | |||
<br> | |||
* array_unshift関数を使用する方法<br>これは、配列の先頭に要素 (要素群) を追加するものである。 | |||
<syntaxhighlight lang="php"> | |||
$result = [72, 52]; | |||
array_unshift($result, 96, 20); // 先頭に96と20を追加 | |||
// 追加後は、$result = [96, 20, 72, 52] となる </syntaxhighlight> | |||
<br> | |||
* array_splice関数を使用する方法<br>これは、任意の位置に要素 (要素群) を追加するものである。 | |||
<syntaxhighlight lang="php"> | |||
$result = [72, 52]; | |||
array_splice($result, 2, 0, [96, 20]); // 2番目の要素の位置に96と20を追加 | |||
// 追加後は、$result = [72, 52, 96, 20] となる | |||
</syntaxhighlight> | |||
<br> | |||
==== 要素の削除 ==== | |||
* array_pop関数で要素を削除する方法<br>これは、末尾の要素を削除する。 | |||
<syntaxhighlight lang="php"> | |||
$result = [72, 52, 96, 20]; | |||
array_pop($result); // 最後尾の要素である20を削除 | |||
</syntaxhighlight> | |||
<br> | |||
* array_shift関数で要素を削除する方法<br>これは、先頭の要素を削除する。 | |||
<syntaxhighlight lang="php"> | |||
$result = [72, 52, 96, 20]; | |||
array_shift($result); // 先頭の要素である72を削除 | |||
</syntaxhighlight> | |||
<br> | |||
* unset関数で要素を削除する方法<br>これは、特定の要素を削除するものである。<br><br>unset関数で要素を削除しても、配列のインデックスは自動的には詰められない。<br>そのため、削除した後に配列のインデックスを振り直す場合は、array_values関数を使用する。 | |||
<syntaxhighlight lang="php"> | |||
$result = [72, 52, 96, 20]; | |||
unset($result[2]); // 2番目の要素である96を削除 | |||
</syntaxhighlight> | |||
<br> | |||
* array_splice関数は要素の削除も可能である。<br>これは、第3引数 (length) に削除する要素数を指定することで実現できる。<br><u>この時、第4引数は指定しないこと。</u> | |||
<syntaxhighlight lang="php"> | |||
$array = [1, 2, 3, 4, 5]; | |||
// 先頭から1つ削除 | |||
array_splice($array, 0, 1); // [2, 3, 4, 5] | |||
// 末尾から1つ削除 | |||
array_splice($array, -1, 1); // [1, 2, 3, 4] | |||
// 1番目の要素から2つの要素を削除 | |||
array_splice($array, 1, 2); // [1, 4, 5] | |||
</syntaxhighlight> | |||
<br> | |||
==== 要素の切り取り ==== | |||
* array_slice関数で要素を切り取り、新たな配列を定義することができる。<br> | |||
<syntaxhighlight lang="php"> | |||
$array = [1, 2, 3, 4, 5]; | |||
// 1番目の要素から2つ要素を切り取り、新たな配列を定義 | |||
// インデックス番号を振りなおす | |||
// array -> [1, 4, 5] | |||
// array2 -> [2, 3] | |||
$array2 = array_slice($array, 1, 2); | |||
// 1番目の要素から2つ要素を切り取り、新たな配列を定義 | |||
// インデックス番号を振りなおさず、保持する | |||
// array -> [1, 4, 5] | |||
// array3 -> [2, 3] | |||
$array3 = array_slice($array, 1, 2, true); | |||
</syntaxhighlight> | |||
<br> | |||
==== 配列の結合 ==== | |||
<syntaxhighlight lang="php"> | |||
$fruits1 = ['apple', 'orange']; | |||
$fruits2 = ['banana', 'grape']; | |||
// スプレッド演算子を使用した配列の結合 | |||
// PHP 7.4以降で使用可能 | |||
$allFruits = [...$fruits1, ...$fruits2]; // 結果: ['apple', 'orange', 'banana', 'grape'] | |||
// array_merge関数を使用した配列の結合 | |||
$mergedFruits = array_merge($fruits1, $fruits2); // 結果: ['apple', 'orange', 'banana', 'grape'] | |||
</syntaxhighlight> | |||
<br> | |||
==== 配列の再定義 ==== | |||
unset関数で要素を削除した場合、配列のインデックスは自動的には詰められない。<br> | |||
そのため、削除した後に配列のインデックスを振り直す場合は、<code>array_values</code>関数を使用して、配列を再定義する。<br> | |||
<br> | |||
<syntaxhighlight lang="php"> | |||
// インデックスを振り直す | |||
$fruits = ['apple', 'banana', 'orange']; | |||
unset($fruits[1]); | |||
$fruits = array_values($fruits); // インデックスを振り直す | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
== 連想配列 == | == 連想配列 == | ||
==== 連想配列の定義 ==== | |||
連想配列において、要素を作成したり要素から値を取得するには、キーを指定する必要がある。<br> | 連想配列において、要素を作成したり要素から値を取得するには、キーを指定する必要がある。<br> | ||
PHPの連想配列では、キーとして整数 (正の整数、0、負の整数) と文字列を使用することができる。<br> | |||
<br> | <br> | ||
キーに整数を指定する場合は、正の整数と負の整数を指定することが可能である。<br> | キーに整数を指定する場合は、正の整数と負の整数を指定することが可能である。<br> | ||
整数を指定する場合、キーは連続した整数である必要はない。<br> | 整数を指定する場合、キーは連続した整数である必要はない。<br> | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
$var[ | // 直接代入 | ||
$var[ | $array['name'] = 'Yamada'; | ||
$var[ | $array['age'] = 25; | ||
$array['city'] = 'Aichi'; | |||
// array関数を使用して定義する場合 | |||
$array1 = array( | |||
'name' => 'Yamada', | |||
'age' => 25, | |||
'city' => 'Osaka' | |||
); | |||
// 短縮構文 (PHP 5.4以降) | |||
$array2 = [ | |||
'name' => 'Tanaka', | |||
'age' => 30, | |||
'city' => 'Tokyo' | |||
]; | |||
// 各要素にアクセスする場合 | |||
echo $array['name']; // Yamada | |||
echo $array['age']; // 25 | |||
echo $array['city']; // Aichi | |||
</syntaxhighlight> | |||
<br> | |||
<u>※注意</u><br> | |||
<u>ただし、数値キーを使用する場合は、以下に示すことに注意する。</u><br> | |||
* キーに小数点を使用する場合、整数に切り捨てられる。 | |||
*: 例: $var[1.5]は、$var[1]として扱われる。 | |||
* キーに文字列の数字を使用する場合、整数に変換される。 | |||
*: 例: $var["2"]は、$var[2]として扱われる。 | |||
<br> | |||
また、可読性の高いコードを記述する場合は、意味のある文字列をキーとして使用することを推奨する。<br> | |||
<syntaxhighlight lang="php"> | |||
$var['number'] = 14; | |||
$var['city'] = 'Tokyo'; | |||
$var['code'] = 8400; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
| 117行目: | 295行目: | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
$var['yamada'] = 86; | $var['yamada'] = 86; | ||
$var["endou"] = 75; | $var["endou"] = 75; | ||
$var['aichi'] = 'nagoya'; | $var['aichi'] = 'nagoya'; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
なお、キーが整数で構成された文字列の場合、整数のキーが指定されたものとして扱われる。<br> | <u>なお、キーが整数で構成された文字列の場合、整数のキーが指定されたものとして扱われる。</u><br> | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
$var['8'] = 75; | $var['8'] = 75; | ||
| 129行目: | 307行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
ただし、キーが整数で構成された文字列であっても、以下のような場合は文字列のままである。<br> | <u>ただし、キーが整数で構成された文字列であっても、以下のような場合は文字列のままである。</u><br> | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
$var['08'] = 75; // 文字列08のまま | $var['08'] = 75; // 文字列08のまま | ||
| 158行目: | 336行目: | ||
// 出力 | // 出力 | ||
[price_peach] => 120 | [price_peach] => 120 | ||
</syntaxhighlight> | |||
<br> | |||
==== 連想配列の要素の存在確認 ==== | |||
<syntaxhighlight lang="php"> | |||
// 任意の要素の存在確認 | |||
if (isset($array1['age'])) { | |||
echo $array1['age']; | |||
} | |||
// デフォルト値の使用 | |||
// Nullコアレス演算子 (PHP 7以降) | |||
// キー"city"が存在しない場合は、"Unknown"となる | |||
$city = $array1['city'] ?? 'Unknown'; | |||
</syntaxhighlight> | |||
<br> | |||
==== 連想配列の操作 ==== | |||
<syntaxhighlight lang="php"> | |||
$array1 = [ | |||
'name' => 'ウェイ', | |||
'age' => 25, | |||
'country' => 'China' | |||
]; | |||
// 要素の追加 | |||
$array1['birth'] = '2024/01/01'; | |||
// 要素の変更 | |||
$array1['name'] = 'ナスティア'; | |||
$array1['age'] = '30'; | |||
$array1['country'] = 'Russia'; | |||
// 要素の削除 | |||
unset($array1['age']); | |||
// 要素数の取得 | |||
$count = count($array1); | |||
// キーの存在確認 | |||
$exists = array_key_exists('name', $array1); | |||
// 値の存在確認 | |||
$hasValue = in_array('Jap', $array1); | |||
// キーの取得 | |||
$keys = array_keys($array1); | |||
// 値の取得 | |||
$values = array_values($array1); | |||
</syntaxhighlight> | |||
<br> | |||
==== 連想配列の走査 ==== | |||
連想配列は通常の配列と異なり、全ての値をfor文で値を取得することはできない。<br> | |||
そのため、全ての値を取得する場合は、foreach文を使用して連想配列の値を取得する。<br> | |||
<br> | |||
<syntaxhighlight lang="php"> | |||
// foreach文のシンタックス | |||
// キーと値の走査 | |||
// <任意の変数名 1>にはキー名、<任意の変数名 2>には値が自動的に代入される | |||
foreach (<連想配列名> as <任意の変数名 1> => <任意の変数名 2>) { | |||
// ...処理 | |||
} | |||
// 値のみの走査 | |||
foreach (<変数名> as <連想配列名>) { | |||
// ...処理 | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="php"> | |||
// キーと値の走査 | |||
foreach ($array1 as $key => $value) { | |||
echo "$key: $value\n"; | |||
} | |||
// 値のみの走査 | |||
foreach ($array1 as $value) { | |||
echo "$value\n"; | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== 連想配列の結合 ==== | |||
<syntaxhighlight lang="php"> | |||
$array1 = [ | |||
'name' => 'ウェイ', | |||
'age' => 25 | |||
]; | |||
$array2 = [ | |||
'country' => 'China', | |||
'hobby' => 'Reading' | |||
]; | |||
// スプレッド演算子での連想配列の結合 | |||
$spread = [...$array1, ...$array2]; | |||
// array_merge関数の使用 | |||
// 同じキーを持つ要素がある場合、後の配列の値で上書き | |||
// 任意の数の配列を結合可能 | |||
// 数値キーは振り直される | |||
$merged = array_merge($array1, $array2); | |||
// +演算子の使用 | |||
// ただし、同じキーが存在する場合は、左側が優先される | |||
$combined = $array1 + $array2; | |||
</syntaxhighlight> | |||
<br> | |||
==== 連想配列の並べ替え ==== | |||
ただし、sort関数には連想配列の対応関係を維持しない。<br> | |||
<u><code>asort</code>関数や<code>ksort</code>関数等は連想配列にも使用できる。</u><br> | |||
<br> | |||
<syntaxhighlight lang="php"> | |||
$array = ["a" => "hoge", "z" => "piyo", "y" => "huga"]; | |||
// キーでソート | |||
ksort($array1); // 昇順 | |||
krsort($array1); // 降順 | |||
// 値でソート | |||
asort($array1); // 昇順 | |||
arsort($array1); // 降順 | |||
// カスタムソート | |||
uasort($array1, function($a, $b) { | |||
return $a <=> $b; // 宇宙船演算子 (PHP 7以降) | |||
}); | |||
</syntaxhighlight> | |||
<br> | |||
<center> | |||
{| class="wikitable" | style="background-color:#fefefe;" | |||
|+ 配列のソート関数の一覧 | |||
! style="background-color:#66CCFF;" | 関数名 | |||
! style="background-color:#66CCFF;" | ソート基準 | |||
! style="background-color:#66CCFF;" | キーと値の相関関係 | |||
! style="background-color:#66CCFF;" | ソートの順序 | |||
|- | |||
| array_multisort関数 || 値 || 連鎖配列は維持、添字配列は維持しない || 最初の配列、あるいは、ソートオプション | |||
|- | |||
| asort関数 || 値 || 維持する || 昇順 | |||
|- | |||
| arsort関数 || 値 || 維持する || 降順 | |||
|- | |||
| krsort関数 || キー || 維持する || 降順 | |||
|- | |||
| ksort関数 || キー || 維持する || 昇順 | |||
|- | |||
| natcasesort関数 || 値 || 維持する || 大文字・小文字を区別しない自然順 | |||
|- | |||
| natsort関数 || 値 || 維持する || 自然順 | |||
|- | |||
| rsort関数 || 値 || 維持しない || 降順 | |||
|- | |||
| shuffle関数 || 値 || 維持しない || ランダム | |||
|- | |||
| sort関数 || 値 || 維持しない || 昇順 | |||
|- | |||
| uasort関数 || 値 || 維持する || ユーザ定義 | |||
|- | |||
| uksort関数 || キー || 維持する || ユーザ定義 | |||
|- | |||
| usort関数 || 値 || 維持しない || ユーザ定義 | |||
|} | |||
</center> | |||
<br> | |||
==== 連想配列の変換 ==== | |||
<syntaxhighlight lang="php"> | |||
// 連想配列をJSON形式に変換 | |||
$json = json_encode($array1); | |||
// JSONを連想配列に戻す | |||
$array = json_decode($json, true); | |||
// 連想配列のフィルタリング | |||
$filtered = array_filter($array1, function($value) { | |||
return $value > 20; // 20より大きい値のみ抽出 | |||
}); | |||
// 連想配列の要素を変換 | |||
$mapped = array_map(function($value) { | |||
return $value * 2; // 各要素を2倍にする | |||
}, $array1); | |||
</syntaxhighlight> | |||
<br> | |||
==== エラー処理 ==== | |||
<syntaxhighlight lang="php"> | |||
// 安全なアクセス | |||
$value = isset($array1['key']) ? $array1['key'] : 'default'; | |||
// または | |||
$value = $array1['key'] ?? 'default'; // PHP 7以降 | |||
// エラー回避 | |||
try { | |||
$value = $array1['nonexistent']; | |||
} | |||
catch (Error $e) { | |||
// エラー処理 | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== 配列の引数展開 == | |||
引数展開は可変⻑配列とは逆であり、配列を引数に展開することもできる。<br> | |||
<br> | |||
<syntaxhighlight lang="php"> | |||
function output($a, $b, $c) | |||
{ | |||
echo $a . PHP_EOL; // hoge | |||
echo $b . PHP_EOL; // piyo | |||
echo $c . PHP_EOL; // huga | |||
} | |||
// 配列を展開して引数に渡す | |||
$array = ["hoge", "piyo", "huga"]; | |||
output(...$array); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 299行目: | 696行目: | ||
<u>そのため、後から元になった配列Aの要素を変更しても配列Bの要素には影響しない。</u><br> | <u>そのため、後から元になった配列Aの要素を変更しても配列Bの要素には影響しない。</u><br> | ||
<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]] | ||