我有一個有介面的主機清單。 該程式碼必須計算每個主機的重複介面。 最後,程式碼也必須為每個主機顯示重複的介面 X 次。
我問這個問題是因為我想發送 X 主機有一個或多個失敗介面發生故障的警報。
$data = array( array("192.168.0.1","eth1"), array("192.168.0.2","eth2"), array("192.168.0.3","eth3"), array("192.168.0.1","eth1"), array("192.168.0.4","eth1"), array("192.168.0.2","eth5") );
我在這裡遵循了其他範例,但大多數都是簡單數組,或者如果是多維範例,則範例不相似。
我已經嘗試過了...
<?php $data = array( array("192.168.0.1","eth1"), array("192.168.0.2","eth2"), array("192.168.0.3","eth3"), array("192.168.0.1","eth1"), array("192.168.0.4","eth1"), array("192.168.0.2","eth5") ); $counter_data = count($data); $duplicated_host = array_filter(array_count_values(array_column($data, 0)), function($v) { return $v > 1; }); print_r($duplicated_host); print ("<br>"); $duplicated_host_keys = (array_keys($duplicated_host)); for ($row_num = 0; $row_num < $counter_data; $row_num++) { $host = $data[$row_num][0]; $interface = $data[$row_num][1]; if (in_array($host,$duplicated_host_keys)) { print($host . " " . $interface . "<br>"); } }
上面的程式碼是錯的,有些工作,但它不是我所期望的... 有沒有簡單的方法可以做到這一點?
最後的輸出應如下圖所示:
Host 192.168.0.1 has eth1 repeated 2 times. --> For current data only Host 192.168.0.1 has eth9 repeated 5 times. Host 192.168.0.4 has eth1 repeated 9 times.
這可能是您正在尋找的:
輸出為:
您需要將兩個分組分組,首先是主機,然後是介面。
然後您可以循環此分組數組以顯示/發送輸出:
線上試用!
NIC -->「網路介面卡」