牛骨文教育服务平台(让学习变的简单)
博文笔记

php Yii2.0 ArrayHelper::map() 用法剖析

创建时间:2016-12-27 投稿人: 浏览次数:617

从多维数组或数组中构建一个映射(键-值 的形式)
通过“$from”和“$to”参数指定对应的键值或属性名称来设置的映射关系。
当然也可以根据分组字段“$group”来进一步分组的映射。
举个例子:

$array = [
          ["id" => "123", "name" => "aaa", "class" => "x"],
          ["id" => "124", "name" => "bbb", "class" => "x"],
          ["id" => "345", "name" => "ccc", "class" => "y"],
      ];

上面的数组执行以下方法

$result = ArrayHelper::map($array, "id", "name");

得到的结果是

[
    "123" => "aaa",
    "124" => "bbb",
    "345" => "ccc",
]

还可以添加第四个参数

$result = ArrayHelper::map($array, "id", "name", "class");

得到的结果是

[
    "x" => [
        "123" => "aaa",
        "124" => "bbb",
    ],
    "y" => [
        "345" => "ccc",
    ],
]

下面是map方法的详细代码

   /**
  * @paramarray $array
 * @param string|Closure $from
 * @param string|Closure $to
 * @param string|Closure $group
 * @return array
 */
public static function map($array, $from, $to, $group = null)
{
    $result = [];
    foreach ($array as $element) {
        $key = static:: getValue($element, $from);
        $value = static:: getValue($element, $to);
        if ($group !== null) {
            $result[ static:: getValue($element, $group)][$key] = $value;
        } else {
            $result[$key] = $value;
        }
    }
    return $result;
}

文章转载自 http://u.cxyblog.com/10/article-aid-329.html

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。