如何解决PHP警告:array_combine和array_merge生成警告
下面的代码正在生成下面的几个错误,它指向
public class MyClass
{
// to be used instead of Unity's transform member
private Transform myTransform;
private void Awake()
{
// make expensive call only once during Awake
myTransform = transform;
}
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','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,$newval));
中的数组,在分配了snmp3_real_walk()
函数的返回值后,打印$ data。
snmp3_real_walk()
我没有任何问题,而不是将$ data分配给snmp_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"
)
可以帮忙吗?
解决方法
不幸的是,您的英文描述不太好,我不确定您要做什么。
到目前为止,据我所知,函数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"
)
但是当您运行foreach
时,会看到太多类型的警告:
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
根据您共享的数据,我编写了以下代码,它们运行平稳且没有警告:
// I have comment out this code on my local,because I don't have
// the implementation you use on your own development environment:
//
// $data = snmp3_real_walk (
// 'localhost',// 'User3',// 'authPriv',// 'MD5',// 'pwd123',// 'DES',// 'ETRA-VRTR-MIB::vRtrIfName'
// );
// By this code,I have simulated the output of the data you have provide
// in your example:
$data = [
"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"
];
$Array = [];
foreach($data as $key => $val) {
$newval = explode(':',trim($val,'STRING: '));
$newkey = explode(' ',trim($key,'[ETRA-VRTR-MIB::vRtrIfName.]'));
// By the following if statement,I try to eliminate the warnings by
// checking if both values exist.
if ( $newkey && $newval ) {
$newArray = array_combine($newkey,$newval);
// Finally to further eliminate the warnings,I try to make sure that the
// $newArray has been created.
if ( $newArray ) {
$Array = array_merge($Array,$newArray);
}
}
}
$data = $Array;
print_r($data);
以上代码在我的本地环境中的输出如下:
因此,如果仍然有错误,则可能必须检查函数snmp3_real_walk
的实际输出是什么,因为它可能会返回一些意外结果。
希望此代码对您有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。