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

 
(同じ利用者による、間の16版が非表示)
11行目: 11行目:
格納する時は、インデックスと値をペアで格納し、取得する時は、インデックスを指定することで指定の値を取得することができる。<br>
格納する時は、インデックスと値をペアで格納し、取得する時は、インデックスを指定することで指定の値を取得することができる。<br>
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  $result[0] = 85;
// 1つずつ定義
  $result[1] = 92;
  $result1[0] = 85;
  $result[2] = 68;
  $result1[1] = 92;
  $result1[2] = 68;
print $result1[0];
print $result1[1];
print $result1[2];
// まとめて定義
$result2[0] = [85, 92, 68];
   
   
  print $result[0];
  print $result2[0];
  print $result[1];
  print $result2[1];
  print $result[2];
  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]   = 72;
  $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の連想配列では、キーとして整数と文字列を使用することができる。<br>
PHPの連想配列では、キーとして整数 (正の整数、0、負の整数) と文字列を使用することができる。<br>
<br>
<br>
キーに整数を指定する場合は、正の整数と負の整数を指定することが可能である。<br>
キーに整数を指定する場合は、正の整数と負の整数を指定することが可能である。<br>
整数を指定する場合、キーは連続した整数である必要はない。<br>
整数を指定する場合、キーは連続した整数である必要はない。<br>
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  $var[0] = 14;
// 直接代入
  $var[2] = 'Tokyo';
$array['name'] = 'Yamada';
  $var[-4] = 8400;
$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]]