2010-09-13 27 views
2

需要一些PHP幫助來弄清楚如何使用我創建的這個數組,但首先我不確定是否我做了這個對嗎?它是一個具有名稱和href鏈接的數組,我希望爲給定的服務器映射它。請讓我知道,如果我寫這個正確:如何在PHP中打印鏈接數組

$server_array = array(
     'server1.domain' => array(
     'href' => 'https://server1.domain.com:8080' 
), 
     'server2.domain' => array(
     'href' => 'https://server2.domain.com:8080' 
), 
     'server3.domain' => array(
     'href' => 'https://server3.domain.com:9999' 
... 
); 

我想將數據從我的鑰匙Server這些鏈接的一個映射。到目前爲止,我已經創建了一個包含服務器名稱的表格,我想要做的就是將該服務器名稱映射到表格中的上述超鏈接之一。

有人可以告訴我如何調整我的打印代碼來做到這一點?謝謝。

$keys = array('Server', Target','Set','Time', 'Length','Size','Status'); 
echo '<table id="stats_1"><tr>'; 
foreach ($keys as $column) 
    echo '<th>' . $column . '</th>'; 
    echo '</tr>'; 

$counter=0; 
foreach ($data as $row){ 
    $counter ++; 
    $class = $counter % 2 === 0 ? 'alt1' : 'alt2'; 
    echo '<tr class="' . $class . '">'; 
    foreach ($keys as $column){ 
     if (isset($row[$column])){ 
      echo '<td>' . $row[$column] . '</td>'; 
     } elseif ($column == 'Status') { 
      echo '<td> Check Logs </td>'; 
     } elseif ($column == 'Length') { 
      echo '<td> n/a </td>'; 
     } elseif ($column == 'Size') { 
      echo '<td> n/a </td>'; 
     } else { 
      echo '<td> </td>'; 
     } 
    } 
} 
echo '</table>'; 
+1

你有什麼問題?你的代碼中有語法錯誤。這是問題嗎?服務器(如「server1.domain」)可以有多個鏈接嗎?如果沒有,爲什麼你不創建你的數組像''server1.domain'=>'https://server1.domain.com:8080'? – 2010-09-13 22:00:28

+0

@Felix - 是的,我的服務器陣列代碼是我需要幫助的。不,多個鏈接。我的服務器數據將是列出的其中一個鏈接。所以如果我有一個'server1.domain'的表格行,然後顯示爲超鏈接。如何在我的foreach循環中打印出來? – cjd143SD 2010-09-13 22:05:49

回答

2

如果我有問題正確,我會創造像數組:

$server_array = array(
     'server1.domain' => 'https://server1.domain.com:8080', 
     'server2.domain' => 'https://server2.domain.com:8080', 
     ... 
); 

和創建你將不得不做鏈接

代碼與服務器名稱顯示錶(假設$row['Server']將包含名稱,如'server5.domain'):

if ($column == 'Server'){ 
    echo '<td> <a href="' . $server_array[$row[$column]] . '">' . $row[$column] . '</a></td>'; 
} 

全碼:

$keys = array('Server', 'Target','Set','Time', 'Length','Size','Status'); 
echo '<table id="stats_1"><tr>'; 
foreach ($keys as $column) { 
    echo '<th>' . $column . '</th>'; 
} 
echo '</tr>'; 

$counter=0; 
foreach ($data as $row){ 
    $counter ++; 
    $class = $counter % 2 === 0 ? 'alt1' : 'alt2'; 
    echo '<tr class="' . $class . '">'; 
    foreach ($keys as $column){ 
    if (isset($row[$column])){ 
     if ($column == 'Server'){ 
      echo '<td> <a href="' . $server_array[$row[$column]] . '">' . $row[$column] . '</a></td>'; 
     } else { 
      echo '<td>' . $row[$column] . '</td>'; 
     } 
    } elseif ($column == 'Status') { 
     echo '<td> Check Logs </td>'; 
    } elseif ($column == 'Length') { 
     echo '<td> n/a </td>'; 
    } elseif ($column == 'Size') { 
     echo '<td> n/a </td>'; 
    } else { 
     echo '<td> </td>'; 
    } 
    } 
} 
echo '</table>'; 
+0

謝謝。我會試試這個。是的,你正確理解我的問題。所以匹配發生在數組內?如果'server2.domain'被調用,它會做查找? – cjd143SD 2010-09-13 22:14:06

+0

@ cjd143SD:是的,因爲'$ server_array'是一個關聯數組,'$ row ['Server']'包含一個服務器的名字,也是數組的一個鍵'$ server_array [$ row ['Server ']]'將和例如一樣'$ server_array ['server1.domain']'這將返回URL。 – 2010-09-13 22:16:35

+0

謝謝!效果很好。 :-) – cjd143SD 2010-09-13 22:30:52