mathiasgrimm / arraypath
此包的最新版本(v2.0.7)没有可用的许可证信息。
php 数组工具,以xpath方式操作数组
v2.0.7
2016-04-26 20:18 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 4.2.*
README
ArrayPath 是一种简单且非常方便的操作数组的工具,特别是多维数组。
无需检查现有索引或获取 E_NOTICE。
使用 ArrayPath,您可以轻松地检查、添加、删除和检索任何数组中的元素
我们的示例将使用类别名,这将在下面进行解释
使用类别名
默认类别名是 A
,但您也可以定义自己的自定义别名。
使用默认别名,您可以获得 IDE 自动完成的优点
<?php // recommended ArrayPath::registerClassAlias(); A::get($aData, 'a/b/c'); // or ArrayPath::registerClassAlias('MyAlias'); MyAlias::get($aData, 'a/b/c');
在 Service Provider 或初始化脚本等任何引导文件中注册类别名是个不错的选择
示例 1(获取)
<?php $post = array( 'user' => array( 'basicInformation' => array( 'name' => 'Mathias', 'surname' => 'Grimm' ), ) ); // normal php way $sName = isset($post['user']['basicInformation']['name' ]) ? $post['user']['basicInformation']['name' ] : null; $sSurname = isset($post['user']['basicInformation']['surname']) ? $post['user']['basicInformation']['surname'] : null; // default value $sLocale = isset($post['user']['locale']) ? $post['user']['locale'] : 'Europe/Dublin'; // =================================================================== // ArrayPath $sName = A::get($post, 'user/basicInformation/name'); $sSurname = A::get($post, 'user/basicInformation/surname'); // with default value $sLocale = A::get($post, 'user/locale', 'Europe/Dublin');
示例 2(设置)
<?php // normal php way $aUser = array(); $sName = $aUser['user']['basicInformation']['name'] = 'Mathias Grimm'; // =================================================================== // ArrayPath $aUser = array(); $sName = A::set($aUser, 'user/basicInformation/name', 'Mathias');
示例 3(存在)
exists 检查索引是否存在,类似于 array_key_exists
无论值为何,只要键存在就返回 true。
isset 在值为 null 的情况下将返回 false。
<?php // normal php way $bExists = false; if (array_key_exists('user', (array) $aUser)) { if (array_key_exists('basicInformation', (array) $aUser['user'])) { if (array_key_exists('name', (array) $aUser['user']['basicInformation'])) { $bExists = true; } } } // =================================================================== // ArrayPath $bExists = A::exists($aUser, 'user/basicInformation/name');
示例 4(获取和删除)
<?php // normal php way if (isset($aUser['user']['basicInformation']['name'])) { $sName = $aUser['user']['basicInformation']['name']; unset($aUser['user']['basicInformation']['name']); } // ArrayPath $sName = A::remove($aUser, 'user/basicInformation/name');
示例 5(使用自定义分隔符)
<?php ArrayPath::setSeparator('.'); $sName = A::get($aUser, 'user.basicInformation.name'); ArrayPath::setSeparator('-'); $sName = A::get($aUser, 'user-basicInformation-name'); ArrayPath::setSeparator('->'); $sName = A::get($aUser, 'user->basicInformation->name'); ArrayPath::setSeparator('|'); $sName = A::get($aUser, 'user|basicInformation|name');
参数一致性
当可用时,参数将始终按此顺序排列
$arrayData, $index, $value, $default
Composer/Packagist
https://packagist.org.cn/packages/mathiasgrimm/arraypath
"require": { "mathiasgrimm/arraypath": "2.*" }