我的应用程序目前在 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]....}
}
这就是我创建要发送到我的服务的 map 的方式。
我正在使用 PHPExcel从 Excel 中读取数据。
我需要创建一个 map 并将其发送到服务。请建议。
最佳答案
您提供的代码实际上看起来更像是 PHP 中的“普通”数组。 PHP 中的数组可以作为更传统意义上的数组,像您的 Java 中的映射(除了它们仍然拥有键本身隐含的顺序之外)。
您的 PHP 实现如下所示。那里有许多关于数据输入和所需业务逻辑的假设,我会编写一些测试用例,根据所需的输出定义诸如“true”、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"
}
}
关于java - 等效于 LinkedHashMap 在 php 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28630333/