php关联数组数据结构 php关联数组数据结构分析
如何添加、删除PHP关联数组
�喾矗�憧梢酝�鄙�鞑⑻畛涫�椤H绻�阏�诖�硎�炙饕��椋�憧赡芟胧褂孟允久��暮��爸煤妥芳釉�兀�鏰rray_push()和array_unshift()函数,但这些函数不能操作关联数组。 2、删除数组元素 如果要从数组中删除一个元素,请使用unset()函数, 使用数字索引数组时,删除数组元素的办法更多,更灵活,可以使用array_shift()和array_pop()函数分别从数组的开头和末尾删除一个元素。 3、交换键和值 假设你想创建一个名叫$states的新数组,使用州府作为索引,使用州名作为关联值,使用array_flip()函数很容易完成这个任务。 4、合并数组 假设前面的数组由一个基于Web的“FlashCard”服务使用,你想提供一种方法测试学生对美国各州首府的掌握情况,你可以使用array_merge()函数合并包含州和首府的数组。 5、编辑数组值 假设在数组中的数据包含大小写错误,在插入到数据库之前,你想纠正这些错误,你可以使用array_map()函数给每个数组元素应用一个回调。 6、按键对数组排序 FlashCard程序常常使用各种排序,如按字母顺序排序,你可以使用ksort()函数按键对关联数组进行排序。因为数组是通过参数传递给ksort()函数的,意味着你不再需要将排序结果分配给另一个变量。 7、随机数组排序 在FlashCard程序中还涉及到另一种随机排序技术,这时你要使用shuffle()函数实现数组项目的随机排序。如果不需要打乱数组顺序,你只是想随机选择一个值,那么使用array_rand()函数即可。 8、确定键和值是否存在 你可以使用in_array()函数确定一个数组元素是否存在。 9、搜索数组 你可能想搜索数组资源,这样用户就可以方便地用一个特定的州府检索关联的州,可以通过array_search()函数实现数组搜索。 10、标准PHP库 标准PHP库(Standard PHP Library,SPL)为开发人员提供了许多数据结构,迭代器,接口,异常和其它以前PHP语言没有的功能,使用这些功能可以通过面向对象的语法遍历数组。
我们提供的服务有:成都网站制作、成都做网站、微信公众号开发、网站优化、网站认证、衡阳县ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的衡阳县网站制作公司
php 递归多层关联数组
给你个思路,你结合具体项目改进吧,如下:
?php
/**
* @author: suifengtec coolwp.com
* @date: 2015-05-03 00:59:15
* @last Modified by: suifengtec coolwp.com
* @last Modified time: 2015-05-04 01:16:09
*/
function coolwp_routes_to_array($_routes){
$routes = array();
foreach($_routes as $key=$val){
if(is_array($val)){
$routes[$key] = $val;
}else{
$routes[$key] = $val;
}
}
return $routes;
}
function coolwp_get_route_from_array(array $array, $path, $default = null){
$delimiter = '/';
if (empty($path))
throw new Exception('路径为空?');
$path = trim($path, $delimiter);
$value = $array;
$parts = explode($delimiter, $path);
foreach ($parts as $part) {
if (isset($value[$part])) {
$value = $value[$part];
} else {
return $default;
}
}
return $value;
}
/*你的json*/
$string = file_get_contents("test.json");
$_routes = new RecursiveIteratorIterator(
new RecursiveArrayIterator(json_decode($string, TRUE)),
RecursiveIteratorIterator::SELF_FIRST
);
/*==========以下为测试内容============*/
/*
转换为数组
*/
$routes = coolwp_routes_to_array($_routes);
/*
获取具体的路由的值
*/
/*$movie_route = coolwp_get_route_from_array($routes ,'account/loginIndex.htm/movie');
//输出为: 电影
echo $movie_route;
*/
print_r($routes);
祝愉快!
PHP 关联数组操作太麻烦,试试 WPJAM Basic 内置的数组处理函数
PHP 有很多非常好用的数组处理函数,PHP 数组函数官方文档都有 80 多个,但是在使用过程,有一些数组的操作使用比较多,我就把这些函数整理成工具函数,然后整合到 WPJAM Basic 中,方便自己的二次开放时候使用,现在整理放出来,如果你和我一样基于 WPJAM Basic 进行二次开发,也可以使用:
PHP 从关联数组中移除指定的键值对,一般使用 unset 函数,比如:
如果要移除多个键值对,就要调用多次的 unset 函数,所以就合并成一个函数 :
这样就可以通过下面方式移除键值对了:
如果仅仅移除一个键值对,还可以直接传递字符串:
我们使用 array_filter 对数组进行过滤的时候,是不会递归调用的,意思如果其中元素也是数组的时候,是不会进行同样的过滤的操作。
输出结果为:
但是我们在一些数据处理的时候,比如后台字段提交的时候,我们希望过滤掉 null 的值,如果元素也是一个关联数组的时候,我们希望关联数组元素中的 null 的值也会过滤掉。所以我们就写了 wpjam_array_filter 这个函数,实现 array_filter 递归调用:
同样的数组:
输出结果为:
PHP 的 array_filter() 函数让我们可以通过回调函数来过滤数组,但是返回的是过滤后的数组,但是很多时候,我们只是简单的要求 返回过滤之后数组的第一个元素 :
使用非常简单的:
如果我们要合并的数组是多维的关联数组,那么使用 array_merge_recursive() 函数进行合并的话,不会进行键名覆盖,而是将多个相同键名的值递归合并成一个数组。
输出结果:
其实我们希望子数组里面的相同的值覆盖,据此我们写了一个函数,用来深度合并多维数组:
相同的数组进行合并:
得到的结果是:
一般不推荐使用 wpjam_array_merge 对多维索引数组进行合并。
要从关联数组中移除并返回指定的键值,一般需要两步操作,先取出,然后 unset 数组中的键值对:
如果每次都这么操作,有点烦人,所以就把这两个步骤合成一个函数,并且还可以设置数组中无此键对应的元素的时候的默认值。
然后直接调用即可:
PHP 关联数组可以通过三种方式插入新元素:
由此可见,关联数组插入元素是无法指定位置的,只能插在最前或者最后面,所以这个函数就是实现 向关联数组插入 元素时候指定的 Key 之前 :
比如下面在 $columns 的 'author' 之前插入 ['page_title'='页面标题'] :
本文名称:php关联数组数据结构 php关联数组数据结构分析
分享链接:http://azwzsj.com/article/hhjjeg.html