当前位置: 网学 > 编程文档 > PHP > 正文

php在多维数组中根据键名快速查询其父键以及父键值的代码

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/06/21

文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学的各位小编整理了PHP-php在多维数组中根据键名快速查询其父键以及父键值的代码的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!

我这么想的:
遍历一遍多维数组,将所有的键建立索引生成一个一维数组;
每次通过键名去查这个键的上级数组及数据
OK,代码如下
indexKey创建索引数组函数:
复制代码 代码如下:
<?php
/**
* FILE_NAME : arr.php FILE_PATH : test/
* 在多维数组中根据键名快速查询其父键以及父键值
*
* @copyright Copyright (c) 2006-2010 mail:levi@cgfeel.com
* @author Levi
* @package test.arr
* @subpackage
* @version 2011-04-29
*/
header("Content-Type: text/html; charset=utf-8");
$arr = array
(
''china'' => array
(
''name'' => ''中国'',
''cite'' => array
(
''beijing'' => array
(
''name'' => ''北京'',
''site'' => array(''chaoyang'' => ''朝阳区'', ''xuanwu'' => ''宣武区'')
),
''shanghai'' => array
(
''name'' => ''上海'',
''site'' => array(''jingan'' => ''静安区'', ''huangpu'' => ''黄浦区'')
)
)
)
);
function printA($data)
{
echo ''<pre>'';
print_r($data);
echo ''</pre>'';
}
function indexKey($data, $parent = NULL)
{
$arr = array();
foreach ($data as $key => $value)
{
$arr[$key] = $parent;
if (is_array($value))
{
$arr += indexKey($value, $key);
}
}
return (Array)$arr;
}
printA(indexKey($arr));
?>

打印出数据如下
Array
(
[china] =>
[name] => china
[cite] => china
[beijing] => cite
[site] => beijing
[chaoyang] => site
[xuanwu] => site
[shanghai] => cite
[jingan] => site
[huangpu] => site
)
不过上面那样写存在一个问题,即:如果有同名键,会造成丢失,于是我写了这么一个类
只需要将数组传递给对象,对象提供两个接口
printArr 打印索引数组
search 查询键名的父数组键名
IndexKey创建查询索引查询类:
复制代码 代码如下:
<?php
/**
* FILE_NAME : arr.php FILE_PATH : test/
* 在多维数组中根据键名快速查询其父键以及父键值
*
* @copyright Copyright (c) 2006-2010 mail:levi@cgfeel.com
* @author Levi
* @package test.arr
* @subpackage
* @version 2011-04-29
*/
header("Content-Type: text/html; charset=utf-8");
$arr = array
(
''china'' => array
(
''name'' => ''中国'',
''cite'' => array
(
''beijing'' => array
(
''name'' => ''北京'',
''site'' => array(''chaoyang'' => ''朝阳区'', ''xuanwu'' => ''宣武区'')
),
''shanghai'' => array
(
''name'' => ''上海'',
''site'' => array(''jingan'' => ''静安区'', ''huangpu'' => ''黄浦区'')
)
)
)
);
function printA($data)
{
echo ''<pre>'';
print_r($data);
echo ''</pre>'';
}
function printP(IndexKey $obj, $key)
{
$parent = $obj->search($key);
if ($parent)
{
echo ''"''.$key.''" Parent Key is: '';
if (!is_array($parent))
{
echo $parent."<br />\n";
}
else printA($parent);
}
else echo ''NO Parent OR No Search of "''.$key.''"!''."<br /><br />\n";
}
class IndexKey
{
private php在多维数组中根据键名快速查询其父键以及父键值的代码_网学
浏览:
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
arr = array();
public function __construct($data)
{
$this->_createIndex($data);
}
public function printArr()
{
return (Array)$this->_arr;
}
public function search($key)
{
return isset($this->_arr[$key]) ? $this->_arr[$key] : NULL;
}
private function _createIndex($data, $parent = NULL)
{
foreach ($data as $key => $value)
{
$this->_checkIndex($key,
  • 下一篇资讯: PHP新手入门学习方法
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号