下面的代码正在生成以下几个错误,它指向
PHP Warning: array_merge(): Expected parameter 1 to be an array, null given in /home/mike/snmpCode.php on line 20
PHP Warning: array_combine(): Both parameters should have an equal number of elements in /home/mike/snmpCode.php on line 20
#!/usr/bin/php
<?PHP
$data = snmp3_real_walk (
'localhost',
'User3',
'authPriv',
'MD5',
'pwd123',
'DES',
'pwd123',
'ETRA-VRTR-MIB::vRtrIfName'
);
print_r($data);
$Array = array();
foreach($data as $key => $val) {
$newval = explode(':',trim($val, 'STRING: '));
$newkey = explode(' ',trim($key, '[ETRA-VRTR-MIB::vRtrIfName.]'));
$Array = array_merge($Array, array_combine($newkey, $newval));
}
$data = $Array;
print_r($data);
?>
似乎指向$Array = array_merge($Array, array_combine($newkey, $newval));
我似乎无法弄清楚这个问题。
下面是snmp3_real_walk()
分配函数返回值后 $data 的打印输出的数组snmp3_real_walk()
。
Array
(
[ETRA-VRTR-MIB::vRtrIfName.1.1] => STRING: "intf1"
[ETRA-VRTR-MIB::vRtrIfName.1.2] => STRING: "intf2"
[ETRA-VRTR-MIB::vRtrIfName.1.3] => STRING: "intf3"
[ETRA-VRTR-MIB::vRtrIfName.1.4] => STRING: "intf4"
[ETRA-VRTR-MIB::vRtrIfName.1.6] => STRING: "intf5"
[ETRA-VRTR-MIB::vRtrIfName.1.7] => STRING: "intf6"
[ETRA-VRTR-MIB::vRtrIfName.1.8] => STRING: "intf7"
[ETRA-VRTR-MIB::vRtrIfName.1.9] => STRING: "intf8"
[ETRA-VRTR-MIB::vRtrIfName.1.10] => STRING: "intf9"
[ETRA-VRTR-MIB::vRtrIfName.1.11] => STRING: "intf10"
[ETRA-VRTR-MIB::vRtrIfName.1.12] => STRING: "intf11"
[ETRA-VRTR-MIB::vRtrIfName.1.13] => STRING: "intf12"
[ETRA-VRTR-MIB::vRtrIfName.1.14] => STRING: "intf13"
[ETRA-VRTR-MIB::vRtrIfName.1.15] => STRING: "intf14"
[ETRA-VRTR-MIB::vRtrIfName.1.19] => STRING: "intf15"
[ETRA-VRTR-MIB::vRtrIfName.1.39] => STRING: "intf16"
[ETRA-VRTR-MIB::vRtrIfName.1.64] => STRING: "intf17"
)
我没有将 $data 分配给 snmp_walk 函数返回并创建如下所示的数组,而是没有任何问题。
$data = array(
'[ETRA-VRTR-MIB::vRtrIfName.1.1]' => 'STRING: "intf1"',
'[ETRA-VRTR-MIB::vRtrIfName.1.2]' => 'STRING: "intf2"'
);
你能帮忙吗?