php在多维数组中根据键名快速查询其父键以及父键值的代码_PHP
我这么想的:
遍历一遍多维数组,将所有的键建立索引生成一个一维数组;
每次通过键名去查这个键的上级数组及数据
OK,代码如下
indexKey创建索引数组函数:
复制代码 代码如下:
/**
* 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 '
'; <br>print_r($data); <br>echo '
}
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创建查询索引查询类:
复制代码 代码如下:
/**
* 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 '
'; <br>print_r($data); <br>echo '
}
function printP(IndexKey $obj, $key)
{
$parent = $obj->search($key);
if ($parent)
{
echo '"'.$key.'" Parent Key is: ';
if (!is_array($parent))
{
echo $parent."
\n";
}
else printA($parent);
}
else echo 'NO Parent OR No Search of "'.$key.'"!'."
\n";
}
class IndexKey
{
private $_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, $parent);
if (is_array($value))
{
$this->_createIndex($value, $key);
}
}
}
private function _checkIndex($key, $parent)
{
$index = isset($this->_arr[$key]) ? $this->_arr[$key] : NULL;
if ($index)
{
if (is_array($index))
{
array_push($this->_arr[$key], $parent);
}
else $this->_arr[$key] = array($index, $parent);
}
else $this->_arr[$key] = $parent;
}
}
$index = (Object)new IndexKey($arr);
printA($index->printArr());
printP($index, 'beijing');
printP($index, 'name');
printP($index, 'china');
?>
最后只差一个数据的输出了,于是我将这个类修改了下
提供了三个对外的方法
printArr 打印索引数组
search 查询键名的父数组键名
parentValue 查询父键值
复制代码 代码如下:
/**
* 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 '
'; <br>print_r($data); <br>echo '
}
function printP2(IndexArr $obj, $key)
{
$parent = $obj->search($key);
if (!is_array($parent))
{
if ($parent)
{
echo '"'.$key.'" Parent Key is: '.$parent."
\n";
}
else echo 'NO Parent OR No Search of "'.$key.'"!'."
\n";;
echo '"'.$key.'" Parent "'.$parent.'" Value is: ';
printA($obj->parentValue($key));
}
else printA($parent);
}
class IndexArr
{
private $_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]['parent'] : NULL;
}
public function parentValue($key)
{
return isset($this->_arr[$key]) ? $this->_arr[$key]['data'] : NULL;
}
private function _createIndex($data, $parent = NULL)
{
foreach ($data as $key => $value)
{
$this->_checkIndex($key, $parent, $data);
if (is_array($value))
{
$this->_createIndex($value, $key);
}
}
}
private function _checkIndex($key, $parent, $data)
{
$data = $parent && isset($data[$parent]) ? $data[$parent] : $data;
!isset($this->_arr[$key]) && $this->_arr[$key] = array('data' => $data, 'parent' => '');
$index = &$this->_arr[$key]['parent'];
if (!empty($index))
{
if (is_array($index))
{
array_push($index, $parent);
}
else $index = array($index, $parent);
}
else $index = $parent;
}
}
$index2 = (Object)new IndexArr($arr);
printA($index2->printArr());
printP2($index2, 'beijing');
printP2($index2, 'name');
printP2($index2, 'china');
?>
源文件代码:php_arr.rar

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les tableaux unidimensionnels sont triés à l'aide de la fonction sort(), les tableaux bidimensionnels sont triés par éléments internes à l'aide de la fonction usort() et les tableaux de grande dimension sont triés par éléments hiérarchiques à l'aide de la fonction usort() imbriquée multicouche. Résoudre le problème de décomposition couche par couche est la clé.

Une matrice est un ensemble de nombres disposés en lignes et en colonnes. Une matrice avec m lignes et n colonnes est appelée une matrice mXn, et m et n sont appelés ses dimensions. Une matrice est un tableau à deux dimensions créé en Python à l'aide de listes ou de tableaux NumPy. En général, la multiplication matricielle peut être effectuée en multipliant les lignes de la première matrice par les colonnes de la deuxième matrice. Ici, le nombre de colonnes de la première matrice doit être égal au nombre de lignes de la deuxième matrice. Scénario d'entrée et de sortie Supposons que nous ayons deux matrices A et B. Les dimensions de ces deux matrices sont respectivement 2X3 et 3X2. La matrice résultante après multiplication aura 2 lignes et 1 colonne. [b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

Comment fusionner plusieurs tableaux en un tableau multidimensionnel en PHP Dans le développement PHP, nous rencontrons souvent le besoin de fusionner plusieurs tableaux en un tableau multidimensionnel. Cette opération est très utile lors de l'exploitation de grandes collections de données et peut nous aider à mieux organiser et traiter les données. Cet article vous présentera plusieurs méthodes courantes pour réaliser cette opération et joindra des exemples de code pour référence. Méthode 1 : utilisez la fonction array_merge. La fonction array_merge est une fonction de fusion de tableaux couramment utilisée en PHP. Elle peut fusionner plusieurs tableaux.

Les tableaux sont un type de données très courant en PHP. Parfois, nous serons confrontés à des situations impliquant des tableaux multidimensionnels. Dans ce cas, si nous devons effectuer la même opération sur tous les éléments, nous pouvons utiliser la fonction array_walk_recursive(). La fonction array_walk_recursive() est une fonction récursive très puissante en PHP qui peut nous aider à effectuer des opérations récursives sur des tableaux multidimensionnels. Il peut parcourir de manière récursive chaque élément d'un tableau multidimensionnel et y effectuer les opérations correspondantes.

Deux façons efficaces d'inverser des tableaux PHP multidimensionnels : De manière récursive en utilisant la fonction array_reverse() : Inversez de manière récursive les éléments de chaque tableau imbriqué. Fonction array_reverse() de PHP7 : utilisez la nouvelle surcharge de la fonction array_reverse() pour inverser des tableaux multidimensionnels.

Comment trier des tableaux multidimensionnels en PHP En PHP, les tableaux constituent une structure de données très courante et importante, et les tableaux multidimensionnels sont utilisés plus fréquemment dans certains traitements de données complexes. Cependant, le tri des tableaux multidimensionnels peut s’avérer délicat. Cet article vous montrera comment trier des tableaux multidimensionnels en PHP et fournira des exemples de code spécifiques. Avant de commencer, comprenons d’abord la structure des tableaux multidimensionnels. Un tableau multidimensionnel signifie que les éléments d'un tableau sont également un tableau, formant une structure imbriquée. Par exemple : $st

Discussion approfondie sur les tableaux PHP : analyse complète des tableaux multidimensionnels, des tableaux associatifs, etc. Les tableaux en PHP sont une structure de données très importante qui peut stocker plusieurs éléments de données et y accéder via des index. En PHP, les tableaux peuvent être divisés en différents types tels que les tableaux indexés, les tableaux associatifs et les tableaux multidimensionnels. Chaque type a ses propres utilisations et caractéristiques. Cet article abordera les différents types de tableaux PHP, notamment comment déclarer, accéder, parcourir et exploiter les tableaux, et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 1. Numéro d'index du tableau d'indexation

Comment parcourir un tableau multidimensionnel en PHP En PHP, un tableau est une structure de données puissante qui peut contenir plusieurs valeurs. Les tableaux multidimensionnels sont une extension supplémentaire des tableaux et peuvent accueillir plusieurs tableaux. Le parcours de boucle est une méthode d'opération courante lorsqu'il s'agit de tableaux multidimensionnels. Cet article explique comment utiliser différentes méthodes de boucle pour parcourir des tableaux multidimensionnels en PHP et fournit des exemples de code correspondants. L'utilisation d'une boucle for pour parcourir des tableaux multidimensionnels est l'une des méthodes de boucle les plus courantes et les plus utilisées. Elle peut imbriquer plusieurs boucles for.
