云客Drupal源码分析之数组操作

在drupal中关于数组的操作需求有很多是php没有直接提供的,但它们又被普遍使用,因此drupal自带了几个数组操作的类,在本系列之前写过一篇以数组合并为主题的分享,本篇将介绍其他几种类型的数组操作,它们是:
多维嵌套数组处理:Drupal\Component\Utility\ NestedArray
递归计算数组差集:Drupal\Component\Utilit\ DiffArray
对数组进行排序:Drupal\Component\Utility\SortArray

类文件位于:\core\lib\Drupal\Component\Utility中,值得说明的是在这个文件夹中的类都是web开发常用的实用工具类,开发者可以轻易用于其他项目中,节约很多时间。

首先说说多维嵌套数组处理类:Drupal\Component\Utility\ NestedArray
类方法全是以静态方法提供,方便使用,先来看一个需求:
在某对象中以$this->get(“a.b.c”)来获取$this->data[“a”][“b”][“c”]怎么实现?在配置系统中就用到了该特性,关键注意点是如a.b.c这样的路径深度是可变的,也就是说数组可以是多层嵌套的,这就是NestedArray::getValue方法的作用:

源文件如下:

 

  public static function &getValue(array &$array, array $parents, &$key_exists = NULL) {
    $ref = &$array;
    foreach ($parents as $parent) {
      if (is_array($ref) && array_key_exists($parent, $ref)) {
        $ref = &$ref[$parent];
      }
      else {
        $key_exists = FALSE;
        $null = NULL;
        return $null;
      }
    }
    $key_exists = TRUE;
    return $ref;
  }


第一个参数是要查找的数组
可以将前文提到的a.b.c以点为分隔符拆分为数组作为该方法的第二个参数就可以得到它的值了。注意如果该参数为空数组将返回整个原数组。
第三个参数什么意思呢?该方法当值不存在时将返回NULL,但我们怎么知道是值不存在还是存在但值为NULL呢?这就是第三个参数的作用,当值存在时它会被设置为true,它以引用方式传递,不需要关注该区别可不传递。如果第二个参数为空数组,该参数也会被设置为true

有get就有set,对应的方法为:

 

  public static function setVa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值