【PHP】これで分かる関数! – 配列その4 –

PHP

更新履歴

更新日更新者更新内容
2021/8/13JJI・”はじめに”の段落の内容を修正
2021/8/21JJI・サンプルプログラムの実行結果に画面の画像を追加

はじめに

配列を表示するため、次の共通関数を使用している場合があります。

array_splice

array_splice()関数の引数を変えることによって他の関数と同じ動きになります。
この関数はいろいろな使い方ができますが、引数が多いため、覚えるのに少し大変です。

配列

配列にarray_splice()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // ライブラリの読み込み
    require_once "lib/sample_lib_02_03.php";

    echo "ファイル名:sample02_03_45.php<br>\n";
    echo "【PHP】配列関数:array_splice<br>\n";

    // 1次元配列
    $ary1 = [
        "山田", "太郎", 35, "男性", "東京都", "090-9999-9999"
    ];

    echo '元の配列' . "<br>\n";
    echo_array1($ary1);
    $org_ary = $ary1;

    echo '4番目以降の配列を削除する' . "<br>\n";
    array_splice($ary1, 3);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo '配列の末尾から2つの要素を削除する' . "<br>\n";
    array_splice($ary1, -2);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo '配列の3番目から3つ削除する' . "<br>\n";
    array_splice($ary1, 2, 3);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo '末尾から2つの配列を残し、配列の3番目以降を削除する' . "<br>\n";
    array_splice($ary1, 2, -2);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo '配列の1番目から3つを["花子", 28, "女性"]に置き換える' . "<br>\n";
    array_splice($ary1, 1, 3, ["花子", 28, "女性"]);
    echo_array1($ary1);
    $ary1 = $org_ary;
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_03_45.php<br>
【PHP】配列関数:array_splice<br>
元の配列<br>
[0]:山田: [1]:太郎: [2]:35: [3]:男性: [4]:東京都: [5]:090-9999-9999:<br><br>
4番目以降の配列を削除する<br>
[0]:山田: [1]:太郎: [2]:35:<br><br>
配列の末尾から2つの要素を削除する<br>
[0]:山田: [1]:太郎: [2]:35: [3]:男性:<br><br>
配列の3番目から3つ削除する<br>
[0]:山田: [1]:太郎: [2]:090-9999-9999:<br><br>
末尾から2つの配列を残し、配列の3番目以降を削除する<br>
[0]:山田: [1]:太郎: [2]:東京都: [3]:090-9999-9999:<br><br>
配列の1番目から3つを["花子", 28, "女性"]に置き換える<br>
[0]:山田: [1]:花子: [2]:28: [3]:女性: [4]:東京都: [5]:090-9999-9999:<br><br>

array_splice()関数を使用して他の配列関数と同じ動きをするサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // ライブラリの読み込み
    require_once "lib/sample_lib_02_03.php";

    echo "ファイル名:sample02_03_46.php<br>\n";
    echo "【PHP】配列関数:array_splice<br>\n";

    // 1次元配列
    $ary1 = [
        "山田", "太郎", 35, "男性", "東京都", "090-9999-9999"
    ];

    echo '元の配列' . "<br>\n";
    echo_array1($ary1);
    $org_ary = $ary1;
    echo 'array_pop()と同じ処理' . "<br>\n";
    array_splice($ary1, -1);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo 'array_shift()と同じ処理' . "<br>\n";
    array_splice($ary1, 0, 1);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo 'array_unshift()と同じ処理' . "<br>\n";
    array_splice($ary1, 0, 0, "1001");
    echo_array1($ary1);
    $ary1 = $org_ary;
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_03_46.php<br>
【PHP】配列関数:array_splice<br>
元の配列<br>
[0]:山田: [1]:太郎: [2]:35: [3]:男性: [4]:東京都: [5]:090-9999-9999:<br><br>
array_pop()と同じ処理<br>
[0]:山田: [1]:太郎: [2]:35: [3]:男性: [4]:東京都:<br><br>
array_shift()と同じ処理<br>
[0]:太郎: [1]:35: [2]:男性: [3]:東京都: [4]:090-9999-9999:<br><br>
array_unshift()と同じ処理<br>
[0]:1001: [1]:山田: [2]:太郎: [3]:35: [4]:男性: [5]:東京都: [6]:090-9999-9999:<br><br>

連想配列

連想配列にarray_splice()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // ライブラリの読み込み
    require_once "lib/sample_lib_02_03.php";

    echo "ファイル名:sample02_03_47.php<br>\n";
    echo "【PHP】配列関数:array_splice<br>\n";

    // 1次元配列
    $ary1 = [
        "first_name" => "山田", 
        "second_name" => "太郎", 
        "age" => 35,
        "seibetsu" => "男性",
        "pref" => "東京都",
        "tel" => "090-9999-9999"
    ];

    echo '元の配列' . "<br>\n";
    echo_array1($ary1);
    $org_ary = $ary1;

    echo '4番目以降の配列を削除する' . "<br>\n";
    array_splice($ary1, 3);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo '配列の末尾から2つの要素を削除する' . "<br>\n";
    array_splice($ary1, -2);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo '配列の3番目から3つ削除する' . "<br>\n";
    array_splice($ary1, 2, 3);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo '末尾から2つの配列を残し、配列の3番目以降を削除する' . "<br>\n";
    array_splice($ary1, 2, -2);
    echo_array1($ary1);
    $ary1 = $org_ary;

    echo '配列の1番目から3つを["花子", 28, "女性"]に置き換える' . "<br>\n";
    echo '置換する配列を連想配列にしても添え字が数字の配列になってしまう' . "<br>\n";    
    array_splice($ary1, 1, 3, ["second_name" => "花子", "age" => 28, "seibetsu" => "女性"]);
    echo_array1($ary1);
    $ary1 = $org_ary;
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_03_47.php<br>
【PHP】配列関数:array_splice<>
元の配列<br>
[first_name]:山田: [second_name]:太郎: [age]:35: [seibetsu]:男性: [pref]:東京都: [tel]:090-9999-9999:<br><br>
4番目以降の配列を削除する<br>
[first_name]:山田: [second_name]:太郎: [age]:35:<br><br>
配列の末尾から2つの要素を削除する<br>
[first_name]:山田: [second_name]:太郎: [age]:35: [seibetsu]:男性:<br><br>
配列の3番目から3つ削除する<br>
[first_name]:山田: [second_name]:太郎: [tel]:090-9999-9999:<br><br>
末尾から2つの配列を残し、配列の3番目以降を削除する<br>
[first_name]:山田: [second_name]:太郎: [pref]:東京都: [tel]:090-9999-9999:<br><br>
配列の1番目から3つを["花子", 28, "女性"]に置き換える<br>
[first_name]:山田: [0]:花子: [1]:28: [2]:女性: [pref]:東京都: [tel]:090-9999-9999:<br><br>

array_unique

array_unique()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // ライブラリの読み込み
    require_once "lib/sample_lib_02_03.php";

    echo "ファイル名:sample02_03_48.php<br>\n";
    echo "【PHP】配列関数:array_unique<br>\n";

    // 1次元配列
    $ary1 = [
        "山田", "太郎", 35, "男性", "山田", "太郎", "東京都"
    ];

    // 1次元連想配列
    $ary2 = [
        "first_name" => "山田",
        "second_name" => "太郎",
        "age" => 35,
        "name" => "山田",
        "太郎",
        "seibetsu" => "男性",
        "pref" => "東京都"
    ];

    echo '配列の重複削除' . "<br>\n";
    $result = array_unique($ary1);
    echo_array1($result);

    echo '連想配列の重複削除' . "<br>\n";
    $result = array_unique($ary2);
    echo_array1($result);
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_03_48.php<br>
【PHP】配列関数:array_unique<br>
配列の重複削除<br>
[0]:山田: [1]:太郎: [2]:35: [3]:男性: [6]:東京都:<br><br>
連想配列の重複削除<br>
[first_name]:山田: [second_name]:太郎: [age]:35: [seibetsu]:男性: [pref]:東京都:<br><br>

array_values

array_values()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // ライブラリの読み込み
    require_once "lib/sample_lib_02_03.php";

    echo "ファイル名:sample02_03_49.php<br>\n";
    echo "【PHP】配列関数:array_values<br>\n";

    // 1次元連想配列
    $ary2 = [
        "first_name" => "山田",
        "second_name" => "太郎",
        "age" => 35,
        "seibetsu" => "男性",
        "pref" => "東京都"
    ];

    echo '配列の重複削除' . "<br>\n";
    $result = array_values($ary2);
    echo_array1($result);
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_03_49.php<br>
【PHP】配列関数:array_values<br>
配列の重複削除<br>
[0]:山田: [1]:太郎: [2]:35: [3]:男性: [4]:東京都:<br><br>

コメント