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

 
(同じ利用者による、間の9版が非表示)
140行目: 140行目:
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  $result = [72, 52];
  $result = [72, 52];
  array_push($result, 96, 20);  // 96と20を末尾に追加
  array_push($result, 96, 20);  // 最後尾に96と20を追加
                              // 追加後は、$result = [72, 52, 96, 20] となる
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
155行目: 156行目:
  array_unshift($result, 96, 20);  // 先頭に96と20を追加
  array_unshift($result, 96, 20);  // 先頭に96と20を追加
                                   // 追加後は、$result = [96, 20, 72, 52] となる </syntaxhighlight>
                                   // 追加後は、$result = [96, 20, 72, 52] となる </syntaxhighlight>
<br>
* array_push関数を使用する方法<br>これは、配列の最後尾に要素 (要素群) を追加するものである。
<syntaxhighlight lang="php">
$result = [72, 52];
array_push($result, 96, 20);  // 最後尾に96と20を追加
                              // 追加後は、$result = [72, 52, 96, 20] となる </syntaxhighlight>
<br>
<br>
* array_splice関数を使用する方法<br>これは、任意の位置に要素 (要素群) を追加するものである。
* array_splice関数を使用する方法<br>これは、任意の位置に要素 (要素群) を追加するものである。
169行目: 164行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== 要素の削除 ====
==== 要素の削除 ====
* array_pop関数で要素を削除する方法<br>これは、末尾の要素を削除する。
* array_pop関数で要素を削除する方法<br>これは、末尾の要素を削除する。
189行目: 185行目:
<br>
<br>
* array_splice関数は要素の削除も可能である。<br>これは、第3引数 (length) に削除する要素数を指定することで実現できる。<br><u>この時、第4引数は指定しないこと。</u>
* array_splice関数は要素の削除も可能である。<br>これは、第3引数 (length) に削除する要素数を指定することで実現できる。<br><u>この時、第4引数は指定しないこと。</u>
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
  $array = [1, 2, 3, 4, 5];
  $array = [1, 2, 3, 4, 5];
   
   
200行目: 196行目:
  // 1番目の要素から2つの要素を削除
  // 1番目の要素から2つの要素を削除
  array_splice($array, 1, 2);  // [1, 4, 5]
  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>
  </syntaxhighlight>
<br>
<br>
205行目: 233行目:
unset関数で要素を削除した場合、配列のインデックスは自動的には詰められない。<br>
unset関数で要素を削除した場合、配列のインデックスは自動的には詰められない。<br>
そのため、削除した後に配列のインデックスを振り直す場合は、<code>array_values</code>関数を使用して、配列を再定義する。<br>
そのため、削除した後に配列のインデックスを振り直す場合は、<code>array_values</code>関数を使用して、配列を再定義する。<br>
<br>
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  // インデックスを振り直す
  // インデックスを振り直す
223行目: 252行目:
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  // 直接代入
  // 直接代入
  $var[0] = 14;
  $array['name'] = 'Yamada';
  $var[2]  = 'Tokyo';
  $array['age']  = 25;
  $var[-4] = 8400;
  $array['city'] = 'Aichi';
   
   
  // array関数を使用して定義する場合
  // array関数を使用して定義する場合
242行目: 271行目:
   
   
  // 各要素にアクセスする場合
  // 各要素にアクセスする場合
  echo $var[0];   // 14
  echo $array['name']; // Yamada
  echo $var[2];  // Tokyo
  echo $array['age'];  // 25
  echo $var[-4];  // 8400
  echo $array['city'];  // Aichi
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
309行目: 338行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== 連想配列の要素の存在確認 ====
==== 連想配列の要素の存在確認 ====
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
324行目: 354行目:
==== 連想配列の操作 ====
==== 連想配列の操作 ====
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
$array1 = [
    'name'    => 'ウェイ',
    'age'    => 25,
    'country' => 'China'
];
  // 要素の追加
  // 要素の追加
  $array1['country'] = 'Korea';
  $array1['birth']   = '2024/01/01';
// 要素の変更
$array1['name']    = 'ナスティア';
  $array1['age']    = '30';
  $array1['age']    = '30';
$array1['country'] = 'Russia';
   
   
  // 要素の削除
  // 要素の削除
338行目: 378行目:
   
   
  // 値の存在確認
  // 値の存在確認
  $hasValue = in_array('Tokyo', $array1);
  $hasValue = in_array('Jap', $array1);
   
   
  // キーの取得
  // キーの取得
347行目: 387行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== 連想配列の走査 ====
==== 連想配列の走査 ====
連想配列は通常の配列と異なり、全ての値をfor文で値を取得することはできない。<br>
そのため、全ての値を取得する場合は、foreach文を使用して連想配列の値を取得する。<br>
<br>
<syntaxhighlight lang="php">
// foreach文のシンタックス
// キーと値の走査
// <任意の変数名 1>にはキー名、<任意の変数名 2>には値が自動的に代入される
foreach (<連想配列名> as <任意の変数名 1> => <任意の変数名 2>) {
    // ...処理
}
// 値のみの走査
foreach (<変数名> as <連想配列名>) {
    // ...処理
}
</syntaxhighlight>
<br>
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
//  キーと値の走査
  foreach ($array1 as $key => $value) {
  foreach ($array1 as $key => $value) {
     echo "$key: $value\n";
     echo "$key: $value\n";
359行目: 419行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== 連想配列の結合 ====
==== 連想配列の結合 ====
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
$array1 = [
    'name' => 'ウェイ',
    'age'  => 25
];
$array2 = [
    'country' => 'China',
    'hobby'  => 'Reading'
];
// スプレッド演算子での連想配列の結合
$spread = [...$array1, ...$array2];
  // array_merge関数の使用
  // array_merge関数の使用
// 同じキーを持つ要素がある場合、後の配列の値で上書き
// 任意の数の配列を結合可能
// 数値キーは振り直される
  $merged = array_merge($array1, $array2);
  $merged = array_merge($array1, $array2);
   
   
369行目: 446行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== 連想配列の並べ替え ====
==== 連想配列の並べ替え ====
ただし、sort関数には連想配列の対応関係を維持しない。<br>
<u><code>asort</code>関数や<code>ksort</code>関数等は連想配列にも使用できる。</u><br>
<br>
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
$array = ["a" => "hoge", "z" => "piyo", "y" => "huga"];
  // キーでソート
  // キーでソート
  ksort($array1);  // 昇順
  ksort($array1);  // 昇順
385行目: 468行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<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">
  <syntaxhighlight lang="php">
418行目: 538行目:
     // エラー処理
     // エラー処理
  }
  }
</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>