【问题标题】:Equivalent for LinkedHashMap in php?相当于 php 中的 LinkedHashMap?
【发布时间】:2015-04-22 05:05:06
【问题描述】:

我的应用程序当前在 java 上,我正在向服务发送 LinkedHashMap(从 Excel 获取数据)。现在我正在将我的应用程序转换为 php。

我需要在 php 中创建一个 LinkedHashMap。

String data[][];  // Excel data in the form of 2-D Array.
LinkedHashMap<Integer, ArrayList> mapToSend = null;
mapToSend = new LinkedHashMap<Integer, ArrayList>();


for (int i = 0; i < data[0].length; i++) {
    ArrayList<String> ar = new ArrayList<String>();
    for (int j = 0; j < numberOfRecords; j++) {
        if (data[j][i] != null) {
             data[j][i] = data[j][i].toString();

            ar.add(data[j][i]); // Add in array through coloumnwise
            } else {
            ar.add("Empty");
        }
    }
    mapToSend.put(i, ar); // making a map like {0=[coloumn data1],1=[coloumn data2]....}
}

这就是我创建地图以发送到我的服务的方式。

我正在使用PHPExcel 从 Excel 中读取数据。

我需要创建地图并将其发送到服务。请建议。

【问题讨论】:

  • 我怀疑您是否使用序列化发送实际的LinkedHashMap。那么地图应该如何表示,您尝试过使用 PHP 来创建这样的表示吗?
  • 使用 JSON 作为中间格式怎么样?
  • @MaartenBodewes 地图应表示为 {0=[coloumn data1],1=[coloumn data2]....}
  • 我对提问者的真正目的有所怀疑,但我想指出:PHP 中的链接哈希映射只是一个关联数组:stackoverflow.com/questions/10914730/…
  • @Mishra Shreyanshu:你错了。 (A) 根据定义,关联数组存储键值对。 (B) 在 PHP 的情况下,顺序是有保证的——这就是 Java 的 LinkedHashMap 与普通 (Java) Map 的区别。

标签: java php phpexcel linkedhashmap


【解决方案1】:

您提供的代码实际上看起来更像是 PHP 中的“普通”数组。 PHP 中的数组可以作为 更传统意义上的数组像你的 Java 那样的映射(除了它们仍然拥有超过键本身所暗示的顺序)。

您的 PHP 实现如下所示。那里有许多关于数据输入和所需业务逻辑的假设,我会编写一些测试用例,针对所需输出定义诸如“真”、“0”、“”之类的案例。基本上,请注意 strval($data[$j][$i]) 的所有不同行为方式。

您在 Java 中从整数 => 字符串创建映射,但在我看来它只是一个普通数组。

$data = array();

//the input data
$data[] = array("val1", "val2");
$data[] = array("val3", 0);
$data[] = array("val4");
$data[] = array("val5", "");
$data[] = array(0, "val6");

$numberOfRecords = count($data); //assuming all of it...

$mapToSend = array();

for($i = 0; $i < count($data[0]); $i++) {
        $ar = array();
        for($j = 0; $j < $numberOfRecords; $j++) {
                if( ($val = strval($data[$j][$i])) != "" ) {//the comparison of your choice, depending on the logic/input
                        $ar[] = $val;
                } else {
                        $ar[] = "Empty";
                }
        }
        $mapToSend[] = $ar; //naturally, this will have indexes 0, 1, 2...
}

var_dump( $mapToSend );

输出:

array(2) {
  [0]=>
  array(5) {
    [0]=>
    string(4) "val1"
    [1]=>
    string(4) "val3"
    [2]=>
    string(4) "val4"
    [3]=>
    string(4) "val5"
    [4]=>
    string(1) "0"
  }
  [1]=>
  array(5) {
    [0]=>
    string(4) "val2"
    [1]=>
    string(1) "0"
    [2]=>
    string(5) "Empty"
    [3]=>
    string(5) "Empty"
    [4]=>
    string(4) "val6"
  }
}

【讨论】:

    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 2011-07-12
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多