suchen

散分?

从数据库读取数据,多数为一个行列整齐的二维数组,姑且叫它做矩阵数组吧
当读取后用php计算涉及很多纵向计算(例如对某字段求和),我看很多人都习惯 $array[记录][字段],其实读取时就应该想好怎样分配数组一维和二维的key

有时获取的矩阵数组格式固定了,例如来自某个API,我看到不少人还按着记录去求二维的值,更有甚者还用递归,看着真累,把行列交换一下再计算多方便啊

squareArray.php

<?phpclass squareArray{	public function swapRowCol($inArr)	{		$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);		foreach($inArr as $key => $value) { $temArr = new ArrayIterator($value); $mit->attachIterator($temArr, $key); }		$arr = array();		foreach($mit as $item) array_push($arr,$item);		if (isset($inArr[0])) $arr = array_combine(array_keys($inArr[0]),$arr);		return $arr;	}	public function swapRowColWithKey($inArr)	{		foreach($inArr as $k1=>$v1) foreach($v1 as $k2=>$v2) $arr[$k2][$k1] = $v2;		return $arr;	}	public function intersect1st($arr1, $arr2, $key)	{		$arr[$key] = array_intersect($arr1[$key], $arr2[$key]);//match source's $key with target 		foreach($arr1 as $k=>$v) { if ($k == $key) continue; $arr[$k] = array_intersect_key($v, $arr[$key]); }		return $arr;	}	public function intersect2nd($arr1, $arr2, $key)	{		foreach($arr2 as $v) $tmpArr[] = $v[$key];		foreach($arr1 as $k=>$v) if(in_array($v[$key], $tmpArr)) $arr[$k] = $v;		return $arr;	}}?>


squareArray.sample.php
这是使用方法,写得简单了点,只是为了怕自己太久没用忘了,提醒一下写法而已
<?phpinclude('squareArray.php');//$array = array('id' => array('001', '002', '003'),'name' => array('张三', '李四', '王五'),'age' => array(22, 23, 11));  $array = array(array('id' => '001', 'name' => '张三', 'age' => 22),array('id' => '002', 'name' => '李四', 'age' => 23),array('id' => '003', 'name' => '王五', 'age' => 11));  $a = array(  0 => array('action_id' => 3),  1 => array('action_id' => 2),  2 => array('action_id' => 1),  3 => array('action_id' => 7),  4 => array('action_id' => 11),);$b = array(  0 => array('action_id' => 3, 'type' => 0, 'order_num' => 67),  1 => array('action_id' => 2, 'type' => 0, 'order_num' => 66),  2 => array('action_id' => 1, 'type' => 0, 'order_num' => 65),  3 => array('action_id' => 7, 'type' => 0, 'order_num' => 64),  8 => array('action_id' => 14, 'type' => 0, 'order_num' => 40),  13 => array('action_id' => 11, 'type' => 0, 'order_num' => 30),);//交换矩阵数组一维和二维键值例子$obj=new squareArray();$arr=$obj->swapRowCol($array);var_export($arr);//交换矩阵数组一维和二维键值例子(保留数值键名)$arr=$obj->swapRowColWithKey($b);var_export($arr);//根据指定key求二维数组矩阵数组交集(一维key)$key='action_id';$aa=$obj->swapRowCol($a);$bb=$obj->swapRowCol($b);$arr = $obj->intersect1st($bb, $aa, $key);//$b和$a自己定义吧,我懒得输入了$arr=$obj->swapRowCol($arr);var_export($arr);//根据指定key求二维数组矩阵数组交集(二维key)$key='action_id';$arr = $obj->intersect2nd($b, $a, $key);//$b和$a自己定义吧,我懒得输入了var_export($arr);exit;?>


如果发现bug就自己处理吧……


回复讨论(解决方案)

mark!

学习一下 感谢分享

巢状数组迭代该如何写?

巢状数组迭代该如何写?

那就不是我这个考虑的了,你也来贡献一个 

巢状数组是啥样的?
不考虑key的swapRowCol方法为啥比考虑key的swapRowColWithKey还复杂呢?
我经常这么用

		    public function swapRowCol($inArr)		    {		        return call_user_func_array('array_merge_recursive', $inArr);		    }

巢状数组是啥样的?
不考虑key的swapRowCol方法为啥比考虑key的swapRowColWithKey还复杂呢?
我经常这么用

		    public function swapRowCol($inArr)		    {		        return call_user_func_array('array_merge_recursive', $inArr);		    }


呵呵,如果输出正确当然你这个好
我当时是顺便练习SPL写的,之后就基本没用过swapRowCol(),一直都是用swapRowColWithKey(),所以就没再考虑优化了 

巢状数组是啥样的?
巢状我没理解错的话就是阵列中还嵌套阵列(cell arrays? nested arrays?),维度细致化来说就是超出二维了


巢状数组是啥样的?
巢状我没理解错的话就是阵列中还嵌套阵列(cell arrays? nested arrays?),维度细致化来说就是超出二维了

那如果不考虑key的话用#5方法不是正好

接触php一年了,第一次看到这个对象
$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);
咋整啊......

学习了,记号一下

收藏+学习。

谢谢lz分享

好铁。先搜藏了

很拥挤啊。换行,大括号。

很拥挤啊。换行,大括号。
显示器1920像素,所以,换行更挤 

过来学习一下

接触php一年了,第一次看到这个对象
$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);
咋整啊......

这句啥意思

好东东,值得收藏之


接触php一年了,第一次看到这个对象
$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);
咋整啊......

这句啥意思

自己查查手册 SPL一章

php5.5 增加了一个array_column函数,这个可以用用

php5.5 增加了一个array_column函数,这个可以用用
我也是昨天中午答人家一个问题查手册才看到,感觉从没用过,细看才知道新增加的
这咚咚不错,减少不少filter和遍历

谁给我的回复删了?

array_column ? 返回数组中指定的一列
自己写一个也很容易

$b = array(  0 => array('action_id' => 3, 'type' => 0, 'order_num' => 67),  1 => array('action_id' => 2, 'type' => 0, 'order_num' => 66),  2 => array('action_id' => 1, 'type' => 0, 'order_num' => 65),  3 => array('action_id' => 7, 'type' => 0, 'order_num' => 64),  8 => array('action_id' => 14, 'type' => 0, 'order_num' => 40),  13 => array('action_id' => 11, 'type' => 0, 'order_num' => 30),);print_r(array_column($b, 'action_id'));function array_column($ar, $key) {  return array_map(function($item) use ($key) { return @$item[$key]; }, $ar);}
Array
(
    [0] => 3
    [1] => 2
    [2] => 1
    [3] => 7
    [8] => 14
    [13] => 11
)

新手,还看不懂。

很有帮助!赞一个!

mark一下,有空看下

高手,技术分真多。

我去。。。玩了1个月还不到200分的路过。

都是牛人,学习一下

learn about,thanks

好多分啊

路过一观。。。。。

学习学习       

收藏…………

感谢分享,学习了

谢谢分享!还要不断学习啊!

学习了。。。。。哎 ,我们弱爆了啊

大清早就有好东西,感谢楼主

求 楼主帮助  php sql注入漏洞 不会。。

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Was sind einige häufige Probleme, die dazu führen können, dass PHP -Sitzungen scheitern?Was sind einige häufige Probleme, die dazu führen können, dass PHP -Sitzungen scheitern?Apr 25, 2025 am 12:16 AM

Gründe für einen Phpessionsfehler sind Konfigurationsfehler, Cookie -Probleme und Sitzungsablauf. 1. Konfigurationsfehler: Überprüfen Sie die richtige Sitzung und setzen Sie die korrekte Sitzung. 2. Kookie -Problem: Stellen Sie sicher, dass der Cookie korrekt eingestellt ist. 3.Sesion läuft ab: Passen Sie die Sitzung an.

Wie debuggen Sie Probleme im Zusammenhang mit Sitzungen in PHP?Wie debuggen Sie Probleme im Zusammenhang mit Sitzungen in PHP?Apr 25, 2025 am 12:12 AM

Zu den Methoden zur Debugg -Sitzungsprobleme in PHP gehören: 1. Überprüfen Sie, ob die Sitzung korrekt gestartet wird. 2. Überprüfen Sie die Lieferung der Sitzungs -ID; 3. Überprüfen Sie den Speicher und das Lesen von Sitzungsdaten. 4. Überprüfen Sie die Serverkonfiguration. Durch Ausgabe von Sitzungs-ID und Daten, Anzeigen von Sitzungsdateiinhalten usw. können Sie effektiv Diagnose und Lösen von Sitzungen im Zusammenhang mit Sitzungen diagnostizieren und lösen.

Was passiert, wenn Session_Start () mehrmals aufgerufen wird?Was passiert, wenn Session_Start () mehrmals aufgerufen wird?Apr 25, 2025 am 12:06 AM

Mehrere Anrufe bei Session_Start () führen zu Warnmeldungen und möglichen Datenüberschreibungen. 1) PHP wird eine Warnung ausstellen und veranlassen, dass die Sitzung gestartet wurde. 2) Dies kann zu unerwarteten Überschreibungen von Sitzungsdaten führen. 3) Verwenden Sie Session_Status (), um den Sitzungsstatus zu überprüfen, um wiederholte Anrufe zu vermeiden.

Wie konfigurieren Sie die Sitzungslebensdauer in PHP?Wie konfigurieren Sie die Sitzungslebensdauer in PHP?Apr 25, 2025 am 12:05 AM

Das Konfigurieren des Sitzungslebenszyklus in PHP kann durch Einstellen von Sitzungen erreicht werden. 1) Session.gc_maxLifetime steuert die Überlebenszeit der serverseitigen Sitzungsdaten, 2) Sitzung.cookie_Lifetime steuert den Lebenszyklus von Client-Cookies. Wenn der Keks auf 0 eingestellt ist, läuft es, wenn der Browser geschlossen ist.

Was sind die Vorteile der Verwendung einer Datenbank zum Speichern von Sitzungen?Was sind die Vorteile der Verwendung einer Datenbank zum Speichern von Sitzungen?Apr 24, 2025 am 12:16 AM

Die Hauptvorteile der Verwendung von Datenbankspeichersitzungen sind Persistenz, Skalierbarkeit und Sicherheit. 1. Persistenz: Auch wenn der Server neu gestartet wird, können die Sitzungsdaten unverändert bleiben. 2. Skalierbarkeit: Anwendbar für verteilte Systeme, um sicherzustellen, dass Sitzungsdaten zwischen mehreren Servern synchronisiert werden. 3. Sicherheit: Die Datenbank bietet verschlüsselten Speicher zum Schutz vertraulicher Informationen.

Wie implementieren Sie eine benutzerdefinierte Sitzung in PHP?Wie implementieren Sie eine benutzerdefinierte Sitzung in PHP?Apr 24, 2025 am 12:16 AM

Das Implementieren der benutzerdefinierten Sitzung in PHP kann durch die Implementierung der SessionHandlerInterface -Schnittstelle durchgeführt werden. Die spezifischen Schritte umfassen: 1) Erstellen einer Klasse, die SessionHandlerInterface wie CustomSessionHandler implementiert; 2) Umschreiben von Methoden in der Schnittstelle (z. B. offen, schließen, lesen, schreiben, zerstören, GC), um die Lebenszyklus- und Speichermethode von Sitzungsdaten zu definieren; 3) Registrieren Sie einen benutzerdefinierten Sitzungsprozessor in einem PHP -Skript und starten Sie die Sitzung. Auf diese Weise können Daten in Medien wie MySQL und Redis gespeichert werden, um Leistung, Sicherheit und Skalierbarkeit zu verbessern.

Was ist eine Sitzungs -ID?Was ist eine Sitzungs -ID?Apr 24, 2025 am 12:13 AM

SessionID ist ein Mechanismus, der in Webanwendungen verwendet wird, um den Benutzersitzstatus zu verfolgen. 1. Es handelt sich um eine zufällig generierte Zeichenfolge, mit der die Identitätsinformationen des Benutzers während mehrerer Interaktionen zwischen dem Benutzer und dem Server aufrechterhalten werden. 2. Der Server generiert und sendet ihn über Cookies- oder URL -Parameter an den Client, um diese Anforderungen in mehreren Anforderungen des Benutzers zu identifizieren und zu verknüpfen. 3. Die Erzeugung verwendet normalerweise zufällige Algorithmen, um Einzigartigkeit und Unvorhersehbarkeit zu gewährleisten. 4. In der tatsächlichen Entwicklung können In-Memory-Datenbanken wie Redis verwendet werden, um Sitzungsdaten zu speichern, um die Leistung und Sicherheit zu verbessern.

Wie gehen Sie mit Sitzungen in einer staatenlosen Umgebung (z. B. API) um?Wie gehen Sie mit Sitzungen in einer staatenlosen Umgebung (z. B. API) um?Apr 24, 2025 am 12:12 AM

Das Verwalten von Sitzungen in staatenlosen Umgebungen wie APIs kann durch Verwendung von JWT oder Cookies erreicht werden. 1. JWT ist für Staatenlosigkeit und Skalierbarkeit geeignet, aber es ist groß, wenn es um Big Data geht. 2. Kookies sind traditioneller und einfacher zu implementieren, müssen jedoch mit Vorsicht konfiguriert werden, um die Sicherheit zu gewährleisten.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion