PHP项目中数组操作的包

298 阅读2分钟

Note: PHP PHPArray Validator

这是一个PHP数组操作中间件,对 PHP 数组的常用操作进行封装 目前包括以下方法:

  • pf_del_val() 删除数组中的某个值

  • pf_key_exists() 判断数组中是否有这个键

  • get() 根据键名获取数组中的某个值,支持点语法

  • pf_arr_sort() 数组冒泡排序

  • pf_tree() 二级数组树结构化(不递归)

  • pf_get_tree() 多级数组结构化(不递归)

  • pf_array_unique() 多维数组去重

  • array_depth() 检测数组的维度

  • pf_encode() 数据格式转换 支持 数组转 'json','xml','csv','serialize'

  • pf_array_flatten() 将多维折叠数组变为一维

  • pf_is_list() 判断PHP数组是否索引数组

  • pf_array_rand_by_weight() 根据权重获取随机区间返回ID

  • pf_rand_val() 随机获取数组中的元素

  • pf_rand_weighted() 按权重 随机返回数组的值

  • pf_array_shuffle() 随机打乱数组(支持多维数组)

  • pf_array_insert() 在数组中的给定位置插入元素

  • pf_array_diff_both() 返回两个数组中不同的元素

  • pf_getCloud() 返回数组的标签云

  • pf_array_group_by() 按指定的键对数组依次分组

  • pf_array_null() 把数组中的null转换成空字符串

  • pf_count_element() 统计数组中元素出现的次数

  • pf_map() 重组数组

  • pf_exists() 判断数组中某个键有木有值

  • pf_save() 通过字符串表示将元素保存到数组中

  • pf_arr_group_by() 按指定值给数组分组

安装

通过 Composer 安装:

php composer.phar require nancheng/pfinal-array

使用


    require './vendor/autoload.php';
    use pf\arr\PFarr;
    
    PFarr::pf_array_unique($arr);
    PFarr::pf_array_col

例子

多维数组去重

    $arr = [1,54,'a',45,12,'c',1,1,12,[1,1,'a',['a','b','a']]];
    $arr = PFarr::pf_array_unique($arr);
    echo '<pre>';
    print_r($arr);
        
    
    // 结果
    Array
    (
        [0] => 1
        [1] => 54
        [2] => a
        [3] => 45
        [4] => 12
        [5] => c
        [9] => Array
            (
                [0] => 1
                [2] => a
                [3] => Array
                    (
                        [0] => a
                        [1] => b
                    )
    
            )
    
    )

获取指定列的数据

$result = PFarr::pf_array_col($records, 'first_name', 'id');
    print_r($result);

按指定的键对数组依次分组

$records = [
    [
        'city'  => '上海',
        'age'   => 18,
        'name'  => '马二'
    ],
    [
        'city'  => '上海',
        'age'   => 20,
        'name'  => '翠花'
    ]
];

//按照 city 分组 
$arr = PFarr::pf_array_group_by($records,'city');

//按照 city 分组 完成 之后 再按照  age 分组
   
$arr1 = PFarr::pf_array_group_by($records,'city','age');

组词算法

<?php
//组词算法  
$arr=array('裤子','牛仔','低腰','加肥');  
$count=count($arr);  
for($i=1;$i<=$count;$i++){  
    $temp[$i]=PFarr::pf_diy_words($arr,$i);  
}  
PFarr::dd($temp);
  

统计数组元素在数组中出现的次数

<?php
$arr_one = ['a','b','c','d'];
$arr_two = ['a','b','a','c','b','d'];

PFarr::dd(PFarr::pf_count_element($arr_one));

/*
  返回
  Array
   (
       [a] => 1
       [b] => 1
       [c] => 1
       [d] => 1
   )
 */

PFarr::dd(PFarr::pf_count_element($arr_two));
 /*
   返回
 Array
 (
     [a] => 2
     [b] => 2
     [c] => 1
     [d] => 1
 )
  
 */

从多维数组或对象数组构建一个映射(键-值对)。

<?php
$array = [
    ['id' => '123', 'name' => 'aaa', 'class' => 'x'],
    ['id' => '124', 'name' => 'bbb', 'class' => 'x'],
    ['id' => '345', 'name' => 'ccc', 'class' => 'y'],
];

PFarr::dd(PFarr::pf_map($array,'id','name'));

/*
  返回:
 Array
 (
     [123] => aaa
     [124] => bbb
     [345] => ccc
 )
 */


PFarr::dd(PFarr::pf_map($array,'id','name','class'));
/*
返回
Array
(
    [x] => Array
        (
            [123] => aaa
            [124] => bbb
        )

    [y] => Array
        (
            [345] => ccc
        )

)
*/

查看更多例子:更多

其他

继续完善