数组操作类

获取值

/**
 * Gets a dot-notated key from an array, with a default value if it does
 * not exist.
 *
 * @param   array   $array    The search array
 * @param   mixed   $key      The dot-notated key or array of keys
 * @param   string  $default  The default value
 * @return  mixed
 */
public static function get($array, $key = null, $default = null, $filter_type = '', bool $throw_error = false)

有人戏称PHP为数组操作语言,懂array就懂PHP,但是PHP的数组操作实际上问题很多,比如:

$arr = [
    'name' => 'kaliphp'
];

echo $arr['country'];

在操作一个不存在的参数时,就会发送警告,我们不得不这样处理

echo $arr['country'] ?? 'HK';

有了数组操作类,我们便可以轻松化解这种尴尬😅

use kaliphp\lib\cls_arr;

$arr = [
    'name' => 'kaliphp',
    'age'  => 10,
];

echo cls_arr::get($arr, 'country', 'HK');    // HK 为获取不到时返回的默认值
echo cls_arr::get($arr, 'age', 20, 'int');   // int 为强制转换类型

如果你觉得数组类只是为了解决参数不存在警告⚠️,那你就大错特错了,数据类可以让我们更加方便的获取多维数组的值,并且可以设置默认值。

use kaliphp\lib\cls_arr;

$arr = [
    'userinfo' => [
        'age'  => 10,
    ]
];

echo cls_arr::get($arr, 'userinfo.age', 20, 'int');   // 通过 . 来获取

通过表达式查询

/**
 * 通过表达式查询
 * 
 * @param array $array      要查询的数组
 * @param mixed $expression 查询表达式
 * @return mixed
 */
public static function arr_search( array $array, string $expression ) 

简单用法

$data = array (
   array ( "name" => "bill", "age" => 40 ),
   array ( "name" => "john", "age" => 30 ),
   array ( "name" => "jack", "age" => 50 ),
   array ( "name" => "john", "age" => 25 )
);
// 查询年龄大于30的数组
print_r( cls_arr::arr_search( $data , "age>=30" ) );
// 查询名字为john的数组
print_r( cls_arr::arr_search( $data , "name=='john'" ) );
// 查询年龄大于25而且名字为john的数组
print_r( cls_arr::arr_search( $data , "age>25 and name=='john'" ) );

Last updated