Heim > Artikel > Backend-Entwicklung > PHP entwickelt Produkte, um SKU-Kombinationen in Stapeln zu generieren (zwei Methoden)
Vor kurzem entwickle ich ein E-Commerce-System und habe ein Produktmodul. Obwohl Ergänzungen, Löschungen, Änderungen und Überprüfungen unvermeidlich sind, geht es beim Produktaspekt eher um die Auswirkungen von JS-Aufrufen und anderen Effekten. Noch wichtiger ist die Batch-Generierung und Kombination von Produkt-SKUs.
Verschiedene Systeme haben unterschiedliche Anforderungen. Die folgenden Anforderungen gelten für die Stapelgenerierung von SKUs nach dem Hinzufügen verschiedener Spezifikationen. [Empfohlenes Lernen: PHP-Video-Tutorial]
Rendering
Der Seitencode wird hier nicht erwähnt, indem alle Spezifikationen kombiniert werden, was das kartesische Produkt in der Mathematik ist Ich habe zwei Methoden in PHP geschrieben und sie aufgezeichnet.
<?php function Cartesian($data){ $len = count($data); for ($i = 0; $i< $len-1; $i++) { if ($i === 0) { // 数组第一个值 $result = $data[0]; } $temp = []; // 数组第一个值和第二个值组合 foreach ($result as $res) { //数组第二个值...$i+1 foreach($data[$i+1] as $sec){ $temp[] = $res . '-' . $sec; } $result = $temp; } } return $result; } //需要计算的数组 $data = array( array('白色','银色','玫瑰金'), array('64G','128G'), array('移动','电信','联通'), array('国行','港版') ); //打印结果 $result = Cartesian($data); print_r($result); ?>
In der tatsächlichen Entwicklung müssen Sie nur das obige zweidimensionale Array generieren, um es zu kombinieren. Der Effekt ist wie folgt:
Array ( [0] => 白色-64G-移动-国行 [1] => 白色-64G-移动-港版 [2] => 白色-64G-电信-国行 [3] => 白色-64G-电信-港版 [4] => 白色-64G-联通-国行 [5] => 白色-64G-联通-港版 [6] => 白色-128G-移动-国行 [7] => 白色-128G-移动-港版 [8] => 白色-128G-电信-国行 [9] => 白色-128G-电信-港版 [10] => 白色-128G-联通-国行 [11] => 白色-128G-联通-港版 [12] => 银色-64G-移动-国行 [13] => 银色-64G-移动-港版 [14] => 银色-64G-电信-国行 [15] => 银色-64G-电信-港版 [16] => 银色-64G-联通-国行 [17] => 银色-64G-联通-港版 [18] => 银色-128G-移动-国行 [19] => 银色-128G-移动-港版 [20] => 银色-128G-电信-国行 [21] => 银色-128G-电信-港版 [22] => 银色-128G-联通-国行 [23] => 银色-128G-联通-港版 [24] => 玫瑰金-64G-移动-国行 [25] => 玫瑰金-64G-移动-港版 [26] => 玫瑰金-64G-电信-国行 [27] => 玫瑰金-64G-电信-港版 [28] => 玫瑰金-64G-联通-国行 [29] => 玫瑰金-64G-联通-港版 [30] => 玫瑰金-128G-移动-国行 [31] => 玫瑰金-128G-移动-港版 [32] => 玫瑰金-128G-电信-国行 [33] => 玫瑰金-128G-电信-港版 [34] => 玫瑰金-128G-联通-国行 [35] => 玫瑰金-128G-联通-港版 )
<?php function Cartesian($data){ $len = count($data); // 取第一个集合数组值 $result = $data[0]; for ($i = 0; $i< $len-1; $i++) { $arr1 = $result; $result = []; // 数组第一个值和第二个值组合 foreach ($arr1 as $res) { //数组第二个值...$i+1 foreach($data[$i+1] as $sec){ if(!is_array($res)) { $res = array($res); } if(!is_array($sec)){ $sec = array($sec); } $result[] = array_merge_recursive($res,$sec); } } } return $result; } //需要计算的数组 $data = array( array('白色','银色','玫瑰金'), array('64G','128G'), array('移动','电信','联通'), array('国行','港版') ); //打印结果 $result = Cartesian($data); print_r($result); ?>
Druckergebnis ausgeben
Array ( [0] => Array ( [0] => 白色 [1] => 64G [2] => 移动 [3] => 国行 ) [1] => Array ( [0] => 白色 [1] => 64G [2] => 移动 [3] => 港版 ) [2] => Array ( [0] => 白色 [1] => 64G [2] => 电信 [3] => 国行 ) [3] => Array ( [0] => 白色 [1] => 64G [2] => 电信 [3] => 港版 ) [4] => Array ( [0] => 白色 [1] => 64G [2] => 联通 [3] => 国行 ) [5] => Array ( [0] => 白色 [1] => 64G [2] => 联通 [3] => 港版 ) [6] => Array ( [0] => 白色 [1] => 128G [2] => 移动 [3] => 国行 ) [7] => Array ( [0] => 白色 [1] => 128G [2] => 移动 [3] => 港版 ) [8] => Array ( [0] => 白色 [1] => 128G [2] => 电信 [3] => 国行 ) [9] => Array ( [0] => 白色 [1] => 128G [2] => 电信 [3] => 港版 ) [10] => Array ( [0] => 白色 [1] => 128G [2] => 联通 [3] => 国行 ) [11] => Array ( [0] => 白色 [1] => 128G [2] => 联通 [3] => 港版 ) [12] => Array ( [0] => 银色 [1] => 64G [2] => 移动 [3] => 国行 ) [13] => Array ( [0] => 银色 [1] => 64G [2] => 移动 [3] => 港版 ) [14] => Array ( [0] => 银色 [1] => 64G [2] => 电信 [3] => 国行 ) [15] => Array ( [0] => 银色 [1] => 64G [2] => 电信 [3] => 港版 ) [16] => Array ( [0] => 银色 [1] => 64G [2] => 联通 [3] => 国行 ) [17] => Array ( [0] => 银色 [1] => 64G [2] => 联通 [3] => 港版 ) [18] => Array ( [0] => 银色 [1] => 128G [2] => 移动 [3] => 国行 ) [19] => Array ( [0] => 银色 [1] => 128G [2] => 移动 [3] => 港版 ) [20] => Array ( [0] => 银色 [1] => 128G [2] => 电信 [3] => 国行 ) [21] => Array ( [0] => 银色 [1] => 128G [2] => 电信 [3] => 港版 ) [22] => Array ( [0] => 银色 [1] => 128G [2] => 联通 [3] => 国行 ) [23] => Array ( [0] => 银色 [1] => 128G [2] => 联通 [3] => 港版 ) [24] => Array ( [0] => 玫瑰金 [1] => 64G [2] => 移动 [3] => 国行 ) [25] => Array ( [0] => 玫瑰金 [1] => 64G [2] => 移动 [3] => 港版 ) [26] => Array ( [0] => 玫瑰金 [1] => 64G [2] => 电信 [3] => 国行 ) [27] => Array ( [0] => 玫瑰金 [1] => 64G [2] => 电信 [3] => 港版 ) [28] => Array ( [0] => 玫瑰金 [1] => 64G [2] => 联通 [3] => 国行 ) [29] => Array ( [0] => 玫瑰金 [1] => 64G [2] => 联通 [3] => 港版 ) [30] => Array ( [0] => 玫瑰金 [1] => 128G [2] => 移动 [3] => 国行 ) [31] => Array ( [0] => 玫瑰金 [1] => 128G [2] => 移动 [3] => 港版 ) [32] => Array ( [0] => 玫瑰金 [1] => 128G [2] => 电信 [3] => 国行 ) [33] => Array ( [0] => 玫瑰金 [1] => 128G [2] => 电信 [3] => 港版 ) [34] => Array ( [0] => 玫瑰金 [1] => 128G [2] => 联通 [3] => 国行 ) [35] => Array ( [0] => 玫瑰金 [1] => 128G [2] => 联通 [3] => 港版 ) )
Dieser Artikel wurde nachgedruckt, Originaladresse: https://juejin.cn/post/7170889538343501838
Das obige ist der detaillierte Inhalt vonPHP entwickelt Produkte, um SKU-Kombinationen in Stapeln zu generieren (zwei Methoden). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!