【PHP】配列のすべての要素を一括で処理するarray_walk()関数とarray_map()関数


こんにちは。今回は、array_walk()関数とarray_map()関数の2つを利用して、配列のすべての要素を一括で処理してみようと思います。

array_walk()の例

  1. リスト表示(ul,li)する関数を定義する
  2. 配列を定義(今回は一つの配列)、まずはprint_rで出力してみる
  3. array_walk()で関数の中で出力する

出力結果

array_walk.php

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>配列のすべての要素を一括処理したい(array_walk)</title>
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
</head>
<body>
<div>
    <?php
    // ユーザー定義関数
    function printIdList($value, $index) {
        echo "<ul>";
        echo "<li>No:".$index."</li>";
        echo "<li>Id".$value."</li>";
        echo "<ul>";
    }

    echo "<p>対象の配列</p>";
    // 配列を$idListに定義
    $idList = array("terurou","taro","jiro");
    print_r($idList);
    echo "</p>";

    // array_walk()->配列の各要素の対して指定した関数を実行する
    // array_walk(指定した配列,ユーザー定義関数);
    echo "<p>一括処理した結果</p>";
    array_walk($idList, 'printIdList');
 ?>
 </div>
</body>
</html>

array_map()の例

  1. リスト表示(ul,li)する関数を定義する
  2. 配列を定義(今回は複数の配列を用意)、まずはprint_rで出力してみる
  3. array_walk()で関数の中で出力する

出力結果

array_map.php

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>配列のすべての要素を一括処理したい(array_map)</title>
</head>
<body>
<?php 

// ユーザー定義関数
function printUserData($id,$name,$age) {
    echo "<ul>";
    echo "<li>ID:".$id."</li>";
    echo "<li>Name:".$name."</li>";
    echo "<li>Age:".$age."</li>";
    echo "</ul>";
}

$idList = array("terurou","taro","jiro");
$nameList = array("八木照郎","山田太郎","鈴木次郎");
$ageList = array(25,72,40);

echo "<p>1つ目の配列:";
print_r($idList);
echo "</p>";

echo "<p>2つ目の配列:";
print_r($nameList);
echo "</p>";

echo "<p>3つ目の配列:";
print_r($ageList);
echo "</p>";

echo "<p>array_map()で一括処理した結果</p>";
// array_map(関数名,配列1,配列2,...)
array_map("printUserData",$idList,$nameList,$ageList);

 ?>
</body>
</html>

array_walkは、array_walk(配列,関数);
であるのに対し、
array_mapは、array_map(関数,配列);
であるのに注意してください。

参考文献

PHP逆引きレシピ