使用索引提取数据,而不是名称



我正在解析一个csv文件,然后像这样循环。

foreach ($this->csvData as $dataKey => &$item) {
foreach ($item as $key => $value) {
print_r($item);
}
}

现在,如果我输出item,我可以看到如下内容

array:12 [
"ID" => "12345"
"CODE" => "AZ6G"
"YEAR" => "2009"
"WEEK" => "13"
"FULL_DATE" => "29/04/2014"
"SALES" => "asdas89.34"
"QUANTITY" => "3"
]

上面的例子代表了csv中的一行,关键字是标题名,然后它有一个值。

问题是,我知道我需要根据索引值保留哪些列。这些值是由用户在前一阶段选择的。所以在上面的例子中,我知道我需要保留ID, FULL_DATE和SALES,所以在我的数据库中,我有0,4,5表示它们的索引。

现在我需要提取这些列。如果我执行如下命令

foreach ($this->csvData as $dataKey => &$item) {
foreach ($item as $key => $value) {
print_r($item[4]);
}
}

将得到一个未定义的索引问题,因为没有名为4的键。如果我给它键的名称,它将工作,并显示值。

那么我如何使用键索引而不是名称来获取值呢?

感谢

你可以使用array_keys然后循环你从数据库中得到的keys,像这样:

<?php
$keys = [0, 4, 5];
$data = [
"ID" => "12345",
"CODE" => "AZ6G",
"YEAR" => "2009",
"WEEK" => "13",
"FULL_DATE" => "29/04/2014",
"SALES" => "asdas89.34",
"QUANTITY" => "3"
];
foreach($keys as $key) {
echo $data[array_keys($data)[$key]] . "n";
}
//  outputs:
//  12345
//  29/04/2014
//  asdas89.34

解释:

array_keys($data)[0]; // is "ID"
// and the "ID" can be used as "key" for the $data array with
$data[array_keys($data)[0]]; // which is $data["ID"]; => "12345"

你可以在这里玩它:http://sandbox.onlinephpfunctions.com/code/4d6a4d86a6cdceccf4034fca06dcef9e50a89dc8

最新更新