gurukami / php-array
简单且安全的数组操作助手,以多种方式操作数组
Requires
- php: >=5.4.0
README
简单且安全的数组操作助手,以多种方式操作数组,尤其是多维数组
无需检查现有键和 E_NOTICE
使用方法
命名空间 Gurukami\Helpers
Exists (通过字符串表示检查给定的键是否存在于数组中)
Arrays::exists($key, $array)
<?php // Don't forget require 'autoload.php' composer use \Gurukami\Helpers\Arrays; $data = [ 'k0' => 'v0', 'k1' => [ 'k1-1' => 'v1-1' ], 'complex_[name]_!@#$&%*^' => 'complex', 'k2' => 'string' ]; Arrays::exists('k0', $data); // returns: true Arrays::exists('k9', $data); // returns: false Arrays::exists('[k1][k1-1]', $data); // returns: true Arrays::exists('[k1][k1-2]', $data); // returns: false Arrays::exists('["complex_[name]_!@#$&%*^"]', $data); // returns: true Arrays::exists('[k2][2]', $data); // returns: false
Save (通过字符串表示将元素保存到数组中)
Arrays::save($key, &$array, $value, $replace = true)
<?php // Don't forget require 'autoload.php' composer use \Gurukami\Helpers\Arrays; $data = [ 'k2' => 'string' ]; Arrays::save('k0', $data, 'v0'); // returns: true, save as 'k0' => 'v0' Arrays::save('[k1][k1-1]', $data, 'v1-1'); // returns: true, save as 'k1' => ['k1-1' => 'v1-1'] Arrays::save('[k2][2]', $data, 'p'); // returns: false, can't save value to string // Broken key names Arrays::save('k3[', $data, 'v3'); // returns: false, can't save, bad syntax Arrays::save('["k4["]', $data, 'v4'); // returns: true, save as 'k4[' => 'v4' Arrays::save('"k4["', $data, 'v4'); // returns: false, can't save, bad syntax // Append Arrays::save('k5', $data, []); // returns: true, create array 'k5' => [] Arrays::save('k5[]', $data, 'v5-0'); // returns: true, append value to exists array 'k5' => [ 'v5-0' ] Arrays::save('k6[k6-1][]', $data, 'v6-1-0'); // returns: true, save as 'k6' => [ 'k6-1' => [ 'v6-1-0' ] ] // Replace if not exists Arrays::save('k2', $data, 'something', false); // returns false, value not replaced because value is exists
Delete (通过字符串表示从数组中删除元素)
Arrays::delete($key, &$array)
<?php // Don't forget require 'autoload.php' composer use \Gurukami\Helpers\Arrays; $data = [ 'k0' => 'v0', 'k1' => [ 'k1-1' => 'v1-1' ], 'complex_[name]_!@#$&%*^' => 'complex' ]; Arrays::delete('k0', $data); // returns: true, delete element from array Arrays::delete('k9', $data); // returns: false Arrays::delete('[k1][k1-1]', $data); // returns: true, delete element from array Arrays::delete('[k1][k1-2]', $data); // returns: false Arrays::delete('["complex_[name]_!@#$&%*^"]', $data); // returns: true, delete element from array
Get (通过字符串表示获取数组中的元素)
Arrays::get($key, $array, $default = null, $ignoreString = true)
<?php // Don't forget require 'autoload.php' composer use \Gurukami\Helpers\Arrays; $data = [ 'k0' => 'v0', 'k1' => [ 'k1-1' => 'v1-1' ], 'complex_[name]_!@#$&%*^' => 'complex', 'k2' => 'string' ]; Arrays::get('k0', $data); // returns: 'v0' Arrays::get('k9', $data, '0'); // returns: '0', key isn't exists in array Arrays::get('[k1][k1-1]', $data); // returns: 'v1-1' Arrays::get('[k1][k1-2]', $data, 'default'); // returns: 'default', key isn't exists in array Arrays::get('["complex_[name]_!@#$&%*^"]', $data); // returns: 'complex' Arrays::get('[k2][2]', $data); // returns: null, key isn't exists in array // If you want get a symbol from string value, you may switch off option $ignoreString = false Arrays::get('[k2][2]', $data, null, false); // returns: 'r' Arrays::get('[k2][null]', $data, null, false); // returns: null, offset isn't exists in string
Shuffle Assoc (保留键的随机排序数组)
Arrays::shuffleAssoc($array)
<?php // Don't forget require 'autoload.php' composer use \Gurukami\Helpers\Arrays; $data = [ 'k0' => 'v0', 'k1' => 'v1', 'k2' => 'v2' ]; Arrays::shuffleAssoc($data); // returns something like: ['k2' => 'v2', 'k1' => 'v1', 'k0' => 'v0']
行为
{method} - 类中的任何方法 (exists,save,delete,get)
Null (空值)
搜索名为 'null' 的元素
Arrays::{method}('null', ...) // or Arrays::{method}('[null]', ...)
如果你想将 'null' 作为常量查找,请使用空字符串 ""
Arrays::{method}('', ...) // or Arrays::{method}('[""]', ...) // or Arrays::{method}('[key][""]', ...)
警告! 你只能为一维数组获取 'null' 常量,如果你需要在更深层次中进行搜索,请使用上面的说明
Arrays::{method}(null, ...)
布尔值
搜索名为 'true' 的元素
Arrays::{method}('true', ...) // or Arrays::{method}('[true]', ...)
如果你想将 'true' 作为常量查找,请使用整数 1
Arrays::{method}(1, ...) // or Arrays::{method}('1', ...) // or Arrays::{method}('[1]', ...) // or Arrays::{method}('[key][1]', ...)
警告! 你只能为一维数组获取 'true' 常量,如果你需要在更深层次中进行搜索,请使用上面的说明
Arrays::{method}(true, ...)
搜索名为 'false' 的元素
Arrays::{method}('false', ...) // or Arrays::{method}('[false]', ...)
如果你想将 'false' 作为常量查找,请使用整数 0
Arrays::{method}(0, ...) // or Arrays::{method}('0', ...) // or Arrays::{method}('[0]', ...) // or Arrays::{method}('[key][0]', ...)
警告! 你只能为一维数组获取 'false' 常量,如果你需要在更深层次中进行搜索,请使用上面的说明
Arrays::{method}(false, ...)
键名中的括号
如果你的键名包含括号,你必须用括号包围你的键名,或者使用单引号 ' 或双引号 "
Arrays::{method}('key[]', ...) // Wrong for all methods except save, because [] is append instruction Arrays::{method}('[key[]]', ...) // Works fine Arrays::{method}('["key[]"]', ...) // Works fine
键名中的破损括号
你可以使用单引号 ' 或双引号 " 来获取键名中破损括号对应的元素
Arrays::{method}('key[', ...) // Wrong Arrays::{method}('key[subKey[]', ...) // Wrong Arrays::{method}('["key["]', ...) // Works fine Arrays::{method}('key["subKey["]', ...) // Works fine
键名边界的破损引号
如果你在键名的边界使用不同的引号,它将被识别为带引号的键名。如果使用不带括号的引号,键名将被识别为键名。
Arrays::{method}('"key\'', ...) // recognized as "key' Arrays::{method}('"key"', ...) // recognized as "key" Arrays::{method}('["key"]', ...) // recognized as key Arrays::{method}('[\'key\']', ...) // recognized as key
风格表示
你可以使用你想要的任何样式
// Normal: Arrays::{method}('[key][subKey][subSubKey][subSubSubKey]', ...) // Camel: Arrays::{method}('key[subKey]subSubKey[subSubSubKey]', ...) // HTML: Arrays::{method}('key[subKey][subSubKey][subSubSubKey]', ...)
要求
- PHP 5.4 或更高版本
安装
php composer.phar require "gurukami/php-array:*"
许可证
MIT 许可证
版权 (c) 2016 Gurukami, http://gurukami.com/