php在多维数组中根据键名快速查询其父键以及父键值的代码
有一个多维数组,有多少维大家可以自定义。假如我们要在这个数组中找一个键为'subIndex'的值,我们可以用for、foreach等方法遍历查找 反过来,假如我们任意给出一个或多个键,要求找出这个键的父级数组的键和值。这又如何实现?
我这么想的:
遍历一遍多维数组,将所有的键建立索引生成一个一维数组;
每次通过键名去查这个键的上级数组及数据
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');
?>
源文件代码:

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Eine Matrix ist eine Menge von Zahlen, die in Zeilen und Spalten angeordnet sind. Eine Matrix mit m Zeilen und n Spalten wird als mXn-Matrix bezeichnet, und m und n werden als ihre Dimensionen bezeichnet. Eine Matrix ist ein zweidimensionales Array, das in Python mithilfe von Listen oder NumPy-Arrays erstellt wird. Im Allgemeinen kann die Matrixmultiplikation durch Multiplikation der Zeilen der ersten Matrix mit den Spalten der zweiten Matrix erfolgen. Dabei sollte die Anzahl der Spalten der ersten Matrix gleich der Anzahl der Zeilen der zweiten Matrix sein. Eingabe- und Ausgabeszenario Angenommen, wir haben zwei Matrizen A und B. Die Abmessungen dieser beiden Matrizen betragen 2X3 bzw. 3X2. Die resultierende Matrix nach der Multiplikation hat 2 Zeilen und 1 Spalte. [b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

Eindimensionale Arrays werden mit der Funktion sort() sortiert, zweidimensionale Arrays werden mit der Funktion usort() nach internen Elementen sortiert und hochdimensionale Arrays werden mit der Funktion mehrschichtig verschachtelt usort() nach hierarchischen Elementen sortiert. Der Schlüssel besteht darin, das Zersetzungsproblem Schicht für Schicht zu lösen.

So führen Sie in PHP mehrere Arrays zu einem mehrdimensionalen Array zusammen. Bei der PHP-Entwicklung müssen wir häufig mehrere Arrays zu einem mehrdimensionalen Array zusammenführen. Dieser Vorgang ist beim Betrieb großer Datensammlungen sehr nützlich und kann uns dabei helfen, Daten besser zu organisieren und zu verarbeiten. In diesem Artikel werden Ihnen mehrere häufig verwendete Methoden zum Ausführen dieses Vorgangs vorgestellt und Codebeispiele als Referenz beigefügt. Methode 1: Verwenden Sie die Funktion array_merge. Die Funktion array_merge ist eine häufig verwendete Funktion zum Zusammenführen von Arrays. Sie kann mehrere Arrays zusammenführen.

Arrays sind ein sehr häufiger Datentyp in PHP. Manchmal werden wir mit Situationen konfrontiert, in denen es um mehrdimensionale Arrays geht. Wenn wir in diesem Fall die gleiche Operation für alle Elemente ausführen müssen, können wir die Funktion array_walk_recursive() verwenden. Die Funktion array_walk_recursive() ist eine sehr leistungsstarke rekursive Funktion in PHP, die uns dabei helfen kann, rekursive Operationen an mehrdimensionalen Arrays durchzuführen. Es kann jedes Element eines mehrdimensionalen Arrays rekursiv durchlaufen und entsprechende Operationen daran ausführen.

Zwei effektive Möglichkeiten, mehrdimensionale PHP-Arrays umzukehren: Rekursive Verwendung der Funktion array_reverse(): Die Elemente jedes verschachtelten Arrays rekursiv umkehren. Funktion array_reverse() von PHP7: Verwenden Sie die neue Überladung der Funktion array_reverse(), um mehrdimensionale Arrays umzukehren.

So sortieren Sie mehrdimensionale Arrays in PHP. In PHP sind Arrays eine sehr verbreitete und wichtige Datenstruktur, und mehrdimensionale Arrays werden bei einigen komplexen Datenverarbeitungen häufiger verwendet. Das Sortieren mehrdimensionaler Arrays kann jedoch schwierig sein. Dieser Artikel zeigt Ihnen, wie Sie mehrdimensionale Arrays in PHP sortieren und stellt spezifische Codebeispiele bereit. Bevor wir beginnen, wollen wir zunächst die Struktur mehrdimensionaler Arrays verstehen. Mehrdimensionales Array bedeutet, dass die Elemente in einem Array auch ein Array sind und eine verschachtelte Struktur bilden. Zum Beispiel: $st

Ausführliche Diskussion von PHP-Arrays: umfassende Analyse mehrdimensionaler Arrays, assoziativer Arrays usw. Arrays in PHP sind eine sehr wichtige Datenstruktur, die mehrere Datenelemente speichern und über Indizes darauf zugreifen kann. In PHP können Arrays in verschiedene Typen unterteilt werden, z. B. indizierte Arrays, assoziative Arrays und mehrdimensionale Arrays. Jeder Typ hat seine eigenen einzigartigen Verwendungszwecke und Eigenschaften. Dieser Artikel befasst sich mit den verschiedenen Arten von PHP-Arrays, einschließlich der Deklaration, dem Zugriff, dem Durchlaufen und Betreiben von Arrays, und stellt spezifische Codebeispiele bereit, um den Lesern ein besseres Verständnis zu erleichtern. 1. Index-Array-Indexnummer

So durchlaufen Sie ein mehrdimensionales Array in PHP. In PHP ist ein Array eine leistungsstarke Datenstruktur, die mehrere Werte enthalten kann. Mehrdimensionale Arrays sind eine weitere Erweiterung von Arrays und können mehrere Arrays aufnehmen. Schleifendurchlauf ist eine gängige Operationsmethode beim Umgang mit mehrdimensionalen Arrays. In diesem Artikel wird die Verwendung verschiedener Schleifenmethoden zum Durchlaufen mehrdimensionaler Arrays in PHP vorgestellt und entsprechende Codebeispiele bereitgestellt. Die Verwendung einer for-Schleife zum Durchlaufen mehrdimensionaler Arrays ist eine der gebräuchlichsten und am weitesten verbreiteten Schleifenmethoden. Sie kann mehrere for-Schleifen verschachteln.
