我的目標是將數組(使用子數組)轉換爲HTML表格。要做到這一點,我必須計算一些行距。 首先,我們給你我的陣列名爲$表的var_dump:相同的操作,不同的結果
array(3) {
["BOUYGUES TELECOM"]=> /* Mobile carrier */
array(4) {
["number"]=>
string(5) "72967"
["date_ok"]=>
string(10) "04/10/1996"
["date_ok_edit"]=>
string(10) "20/09/2013"
["azimuth"]=>
array(4) {
["66.00"]=> /* Azimuth of an antenna */
array(1) {
["26.00"]=> /* Height (from floor) of the antenna */
array(1) {
["FH"]=> /* System/Technology used */
array(1) {
[0]=> /* Ranges of frequencies */
string(18) "37.26 à 37.50 GHz"
}
}
}
["80.00"]=>
array(1) {
["26.00"]=>
array(5) {
["GSM 1800"]=>
array(2) {
[0]=>
string(22) "1758.30 à 1784.90 MHz"
[1]=>
string(22) "1853.30 à 1879.90 MHz"
}
["GSM 900"]=>
array(2) {
[0]=>
string(20) "880.10 à 889.90 MHz"
[1]=>
string(20) "925.10 à 934.90 MHz"
}
["LTE 1800"]=>
array(2) {
[0]=>
string(22) "1765.00 à 1785.00 MHz"
[1]=>
string(22) "1860.00 à 1880.00 MHz"
}
["UMTS 2100"]=>
array(3) {
[0]=>
string(22) "1900.10 à 1905.10 MHz"
[1]=>
string(22) "1935.30 à 1950.10 MHz"
[2]=>
string(22) "2125.30 à 2140.10 MHz"
}
["UMTS 900"]=>
array(2) {
[0]=>
string(20) "880.10 à 889.90 MHz"
[1]=>
string(20) "925.10 à 934.90 MHz"
}
}
}
["180.00"]=>
array(1) {
["26.00"]=>
array(5) {
["GSM 1800"]=>
array(2) {
[0]=>
string(22) "1758.30 à 1784.90 MHz"
[1]=>
string(22) "1853.30 à 1879.90 MHz"
}
["GSM 900"]=>
array(2) {
[0]=>
string(20) "880.10 à 889.90 MHz"
[1]=>
string(20) "925.10 à 934.90 MHz"
}
["LTE 1800"]=>
array(2) {
[0]=>
string(22) "1765.00 à 1785.00 MHz"
[1]=>
string(22) "1860.00 à 1880.00 MHz"
}
["UMTS 2100"]=>
array(3) {
[0]=>
string(22) "1900.10 à 1905.10 MHz"
[1]=>
string(22) "1935.30 à 1950.10 MHz"
[2]=>
string(22) "2125.30 à 2140.10 MHz"
}
["UMTS 900"]=>
array(2) {
[0]=>
string(20) "880.10 à 889.90 MHz"
[1]=>
string(20) "925.10 à 934.90 MHz"
}
}
}
["280.00"]=>
array(1) {
["26.00"]=>
array(5) {
["GSM 1800"]=>
array(2) {
[0]=>
string(22) "1758.30 à 1784.90 MHz"
[1]=>
string(22) "1853.30 à 1879.90 MHz"
}
["GSM 900"]=>
array(2) {
[0]=>
string(20) "880.10 à 889.90 MHz"
[1]=>
string(20) "925.10 à 934.90 MHz"
}
["LTE 1800"]=>
array(2) {
[0]=>
string(22) "1765.00 à 1785.00 MHz"
[1]=>
string(22) "1860.00 à 1880.00 MHz"
}
["UMTS 2100"]=>
array(3) {
[0]=>
string(22) "1900.10 à 1905.10 MHz"
[1]=>
string(22) "1935.30 à 1950.10 MHz"
[2]=>
string(22) "2125.30 à 2140.10 MHz"
}
["UMTS 900"]=>
array(2) {
[0]=>
string(20) "880.10 à 889.90 MHz"
[1]=>
string(20) "925.10 à 934.90 MHz"
}
}
}
}
}
["ORANGE"]=>
array(4) {
["number"]=>
string(6) "320884"
["date_ok"]=>
string(10) "11/07/2003"
["date_ok_edit"]=>
string(10) "06/07/2007"
["azimuth"]=>
array(3) {
["0.00"]=>
array(1) {
["23.00"]=>
array(3) {
["GSM 1800"]=>
array(2) {
[0]=>
string(22) "1713.10 à 1736.90 MHz"
[1]=>
string(22) "1808.10 à 1831.90 MHz"
}
["GSM 900"]=>
array(2) {
[0]=>
string(20) "890.10 à 902.50 MHz"
[1]=>
string(20) "935.10 à 947.50 MHz"
}
["UMTS 2100"]=>
array(3) {
[0]=>
string(22) "1910.10 à 1915.10 MHz"
[1]=>
string(22) "1964.90 à 1979.70 MHz"
[2]=>
string(22) "2154.90 à 2169.70 MHz"
}
}
}
["120.00"]=>
array(1) {
["23.00"]=>
array(3) {
["GSM 1800"]=>
array(2) {
[0]=>
string(22) "1713.10 à 1736.90 MHz"
[1]=>
string(22) "1808.10 à 1831.90 MHz"
}
["GSM 900"]=>
array(2) {
[0]=>
string(20) "890.10 à 902.50 MHz"
[1]=>
string(20) "935.10 à 947.50 MHz"
}
["UMTS 2100"]=>
array(3) {
[0]=>
string(22) "1910.10 à 1915.10 MHz"
[1]=>
string(22) "1964.90 à 1979.70 MHz"
[2]=>
string(22) "2154.90 à 2169.70 MHz"
}
}
}
["240.00"]=>
array(1) {
["23.00"]=>
array(3) {
["GSM 1800"]=>
array(2) {
[0]=>
string(22) "1713.10 à 1736.90 MHz"
[1]=>
string(22) "1808.10 à 1831.90 MHz"
}
["GSM 900"]=>
array(2) {
[0]=>
string(20) "890.10 à 902.50 MHz"
[1]=>
string(20) "935.10 à 947.50 MHz"
}
["UMTS 2100"]=>
array(3) {
[0]=>
string(22) "1910.10 à 1915.10 MHz"
[1]=>
string(22) "1964.90 à 1979.70 MHz"
[2]=>
string(22) "2154.90 à 2169.70 MHz"
}
}
}
}
}
["SFR"]=>
&array(4) {
["number"]=>
string(6) "453640"
["date_ok"]=>
string(10) "25/05/2007"
["date_ok_edit"]=>
string(10) "23/04/2010"
["azimuth"]=>
array(3) {
["165.00"]=>
array(1) {
["25.00"]=>
array(2) {
["GSM 1800"]=>
array(2) {
[0]=>
string(22) "1710.00 à 1785.00 MHz"
[1]=>
string(22) "1805.00 à 1880.00 MHz"
}
["UMTS 2100"]=>
array(3) {
[0]=>
string(22) "1915.10 à 1920.10 MHz"
[1]=>
string(22) "1920.50 à 1935.30 MHz"
[2]=>
string(22) "2110.50 à 2125.30 MHz"
}
}
}
["243.20"]=>
array(1) {
["27.60"]=>
array(1) {
["FH"]=>
array(1) {
[0]=>
string(18) "37.26 à 37.50 GHz"
}
}
}
["280.00"]=>
&array(1) {
["25.00"]=>
&array(2) {
["GSM 1800"]=>
array(2) {
[0]=>
string(22) "1710.00 à 1785.00 MHz"
[1]=>
string(22) "1805.00 à 1880.00 MHz"
}
["UMTS 2100"]=>
array(3) {
[0]=>
string(22) "1915.10 à 1920.10 MHz"
[1]=>
string(22) "1920.50 à 1935.30 MHz"
[2]=>
string(22) "2110.50 à 2125.30 MHz"
}
}
}
}
}
}
現在,這個函數計算多少行需要(移動)的載體。
function nbRowsForCarrier($carrier){
global $table;
$nb_lines = 0;
foreach($table[$carrier]['azimuth'] as $azimuth => $heights){
foreach($heights as $height => $systems){
foreach($systems as $system){
$nb_lines += count($system);
}
}
}
return $nb_lines;
}
所以,如果我叫nbRowsForCarrier(「SFR」),則返回11(因爲11範圍頻率SFR)的 的問題是,這種結果發生變化時,它從一個foreach叫:
foreach($table as $carrier => $details){
echo nbRowsForCarrier($carrier); // When $carrier="SFR", it returns 13 instead of 11.
[...Other operations...]
}
對於其他運營商「BOUYGUES TELECOM」和「橙色」,它工作正常。但它不適用於「SFR」。 我高度懷疑引用是問題(請注意,在var_dump中,在SFR陣列中的「array」之前有一些「&」) 也許是光標的問題...我嘗試使用reset(),但沒有成功...
有沒有辦法將此數組複製到其他變量而無需引用(導致問題,我認爲)?
謝謝您的幫助