[PHP] 配列とリスト(list)


Study / PHP    作成日付 : 2020/01/14 03:00:00   修正日付 : 2020/01/14 03:00:00

こんにちは。明月です。


JavaやC#で配列とリスト(list)は別の文法です。Array(配列)の場合はその個数を決めてデータを入れるし、配列の個数を減らしたり増えたりするのが出来ないです。

List(リスト)の場合は連結リストアルゴリズムでなっている構造でポインタを連携しながら追加したり削除したりする資料構造になっています。

PHPではその配列とリストの区分が別に分けていることではなく、arraryで宣言してリストみたいに追加や削除ができる構造になっています。

<?php
  $title = "title";
  // type1はarray関数を利用する。
  $type1 = array("Test", "Hello", "World");

  // 括弧([])で宣言する。
  $type2[0] = "Test";
  // 配列(リスト)を追加する時には別の関数が要らなく、ただ括弧([])宣言でできる。
  $type2[1] = "Hello";
  $type2[2] = "World";
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>
  <?php
    foreach($type1 as $item) {
      echo $item." ";
    }
  ?>
  <br />
  <?php
    foreach($type2 as $item) {
      echo $item." ";
    }
  ?>
</body>
</html>


そしてPHPには連関配列ということでマップやディクショナリみたいに使う配列があります。

連関配列は上の配列でインデックスの数代わりに文字を入れると連関配列になります。

<?php
  $title = "title";
  // array関数を利用して宣言する方法
  $type1 = array(
           "First" => "Test",
           "Second" => "Hello",
           "Third" => "World"
         );

  // 配列みたいに別の宣言なしで([])を利用して宣言する方法
  $type2["First"] = "Test";
  $type2["Second"] = "Hello";
  $type2["Third"] = "World";
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>	
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
  <br />
  <br />
  <br />
  <?php
    foreach($type2 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
</body>
</html>


ここまで配列(リスト)の定義を確認しました。それでデータを追加や削除に関して確認しましょう。

関数としてはarray_pushとarray_pop関数があります。array_pushは配列のデータを続けて入れることです。つまり、上の例で[3]までデータを入れたら[4]にデータを入れることですね。

array_popは最後のデータ[4]までデータを入れたら[4]データをリターンして削除する関数です。

link - https://www.php.net/manual/en/function.array-push.php

link - https://www.php.net/manual/en/function.array-pop.php

<?php
  $title = "title";
  $type1 = array("Test", "Hello", "World");
  // [4] 配列にpushを利用してデータを入れる。
  array_push($type1,"push");
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
  <br />
  <br />
  <br />
  <?php
    // [4]配列を削除する。
    array_pop($type1);
  ?>
  <br />
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
</body>
</html>


array_popの場合は最後でデータを取り除きますが、最初のデータを取り除き関数(array_shift)もあります。

link - https://www.php.net/manual/en/function.array-shift.php

<?php
  $title = "title";
  $type1 = array("Test", "Hello", "World");

  array_push($type1,"push");
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>	
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
  <br />
  <br />
  <br />
  <?php
    // 最初の配列を取り除く。
    array_shift($type1);
  ?>
  <br />
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
</body>
</html>


今回は配列の中でデータを入れる関数(array_splice)です。

array_spliceは一つのデータを入れることより、2つの配列を合わせることと同じです。

link - https://www.php.net/manual/en/function.array-splice.php

<?php
  $title = "title";
  $type1 = array("Test", "Hello", "World");
  $type2 = array("push");
  // 配列を合わせることも可能
  array_splice($type1, 2, 0, $type2);
  // そのままデータを入れることも可能
  array_splice($type1 , 3, 0, "push2");
  // パラメタは初めがあわせような配列、2つ目が位置、3つ目が削除配列数、4つ目が合わせる配列になる。
  // つまり、上の$type1は$type2を「2」番目に入れたので「Test - 0, Hello - 1, push - 2, World -3」になる。
  // "push2"を3番目に入れるので「Test - 0, Hello - 1, push - 2, push2 - 3,World - 4」になる。
  // もし、3つ目が「0」ではなく、「1」の場合は「World」が削除される。「-1」の場合は「push」が削除される。「-2」の場合は「Hello, push」が削除される。
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
</body>
</html>


その後、sort関数、extract関数、array_walk関数がありますが、sortの場合は整列、extractは抽出ですが、あまり使わないですね。

sortの場合はリストの数字の対象なので、クラスやオブジェクトタイプならsort関数を作らなければならないと思います。

link - https://www.php.net/manual/en/function.sort.php

link - https://www.php.net/manual/en/function.extract.php

link - https://www.php.net/manual/en/function.array-walk.php

最新投稿