创建另一个数组后在php中使用array_combine时,数据将被覆盖

如何解决创建另一个数组后在php中使用array_combine时,数据将被覆盖

试图弄清楚如何用值更新新数组。

$data = array('[ETRA-VRTR-MIB::vRtrIfName.1.1]' => 'STRING: "intf1"','[ETRA-VRTR-MIB::vRtrIfName.1.2]' => 'STRING: "intf2"');

echo '<pre>';
print_r($data);

foreach($data as $key => $val) {
    $newval = explode(':',trim($val,'STRING: '));
    $newkey = explode(' ',trim($key,'[ETRA-VRTR-MIB::vRtrIfName.]'));

    $Array = array_combine($newkey,$newval);

    echo '<pre>';
    print_r($Array);

}

$data = $Array;
echo '<pre>';
print_r($data);

for循环之前的第一个打印输出

Array
(
   [[ETRA-VRTR-MIB::vRtrIfName.1.1]] => STRING: "intf1"
   [[ETRA-VRTR-MIB::vRtrIfName.1.2]] => STRING: "intf2"
)

在for循环中的第二个打印输出

    Array
   (
    [1.1] => "intf1"
   )
   Array
   (
    [1.2] => "intf2"
   )

$ data的第三次打印输出

   Array
   (
    [1.2] => "intf2"
   )

如您所见,它被覆盖,因此仅显示第二个数组。试图弄清楚如何遍历$ Array并为其分配适当的密钥。最终的$ data应该如下所示。

Array
(
 [1.1] => "intf1"
)
Array
(
 [1.2] => "intf2"
)

非常感谢您的帮助。

解决方法

这是因为您没有在循环中合并以前的数组,这就是它覆盖try array_merge()的原因,如下所示:

<?php
$data = array('[ETRA-VRTR-MIB::vRtrIfName.1.1]' => 'STRING: "intf1"','[ETRA-VRTR-MIB::vRtrIfName.1.2]' => 'STRING: "intf2"');

echo '<pre>';
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));
    echo '<pre>';
    print_r($Array);

}

$data = $Array;
echo '<pre>';
print_r($data);

https://paiza.io/projects/WXZPyYsiYH9ZtLXa3axGKw?language=php

处检查输出

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?