我的框架里面一个多维数组元素操作类,主要用于读取数组中配置数据,可以通过字符串节点的方式:a.b.c 来获取和设置元素,以及多维数组的覆盖,有需求的可以参考下吧!
& $v) {
if (is_array($v) && isset($arraySrc[$k])) {
static::merge($arraySrc[$k], $v);
} else {
$arraySrc[$k] = $v;
}
}
}
public static function has(array & $arr, $node) {
if (empty($arr)) return false;
$keys = static::explode($node);
foreach ($keys as $key) {
$key = strval($key);
if (isset($arr[$key])) {
$arr = & $arr[$key];
} else {
return false;
}
}
return true;
}
public static function hasKey(array & $arr, $node) {
if (empty($arr)) return false;
$keys = static::explode($node);
foreach ($keys as $key) {
$key = strval($key);
if (array_key_exists($key, $arr)) {
$arr = & $arr[$key];
} else {
return false;
}
}
return true;
}
public static function clear(array & $arr, $node) {
if (empty($arr)) return;
$keys = static::explode($node);
foreach ($keys as $key) {
$key = strval($key);
if (isset($arr[$key])) {
$arr = & $arr[$key];
} else {
return; // 指定节点不存在亦认为是成功
}
}
$arr = null;
unset($arr);
}
}
下面举个栗子:
'; // 测试数组1 $arr1 = ['a'=>['b'=>['c'=>['d'=>['e'=>['f'=>'http://blog.csdn.net/zhouzme']]]]]]; // 测试数组2 $arr2 = ['a'=>['b'=>['c'=>['h'=>['i'=>['j'=>'http://www.hihtml5.com/']]]]]]; echo '读取已存在的多维元素: '; echo Node::get($arr1, 'a.b.c.d.e.f', '默认值'); // http://blog.csdn.net/zhouzme echo '
'; echo '读取不存在的多维元素: '; echo Node::get($arr1, 'a.b.c.d.e.g', '默认值'); // 默认值 echo '
'; echo '新增多维元素: '; Node::set($arr1, 'a.b.c.d.e.g', 'http://www.ai9475.com/'); print_r($arr1); echo '
'; echo '读取新增的多维元素: '; echo Node::get($arr1, 'a.b.c.d.e.g', '默认值'); // http://www.ai9475.com/ echo '
'; echo '合并两个数组
'; Node::merge($arr1, $arr2); print_r($arr1);
下面是对应的输出结果:
以上就是小编为大家带来的PHP多维数组元素操作类的方法全部内容了,希望大家多多支持考高分网~



