[英]Insert default values in duplicated array key/values
我有一个以这种方式构造的csv文件。 它提供了按小时显示的页面浏览量
"00","ARTICLE 1",100
"00","ARTICLE 2",50
"00","ARTICLE 3",30
"01","ARTICLE 1",40
"01","ARTICLE 2",100
"01","ARTICLE 4",200
"02","ARTICLE 1",30
"02","ARTICLE 2",40
"02","ARTICLE 3",30
"03","ARTICLE 5",30
我将csv导入我的php代码中,并将内容插入多维数组中。 当我var_dump我的数组这就是我得到的
Array
(
[00] => Array
(
[ARTICLE 1] => 100
[ARTICLE 2] => 50
[ARTICLE 3] => 30
)
[01] => Array
(
[ARTICLE 1] => 40
[ARTICLE 2] => 100
[ARTICLE 4] => 200
)
[02] => Array
(
[ARTICLE 1] => 30
[ARTICLE 2] => 40
[ARTICLE 3] => 30
)
[03] => Array
(
[ARTICLE 5] => 30
)
)
所以我的问题是“文章4”仅在“ 01”处查看过,但我希望它出现在键“ 00”,“ 02”,“ 03”中,默认值为0。“ ARTICLE 5”也是如此仅出现在键“ 03”上。 我希望它出现在键“ 00”,“ 01”,“ 02”,“ 03”,“ 04”中
最后,我想让我的阵列像这样出现
Array
(
[00] => Array
(
[ARTICLE 1] => 100
[ARTICLE 2] => 50
[ARTICLE 3] => 30
[ARTICLE 4] => 0
[ARTICLE 5] => 0
)
[01] => Array
(
[ARTICLE 1] => 40
[ARTICLE 2] => 100
[ARTICLE 3] => 0
[ARTICLE 4] => 200
[ARTICLE 5] => 0
)
[02] => Array
(
[ARTICLE 1] => 30
[ARTICLE 2] => 40
[ARTICLE 3] => 30
[ARTICLE 4] => 0
[ARTICLE 5] => 0
)
[03] => Array
(
[ARTICLE 1] => 0
[ARTICLE 2] => 0
[ARTICLE 3] => 0
[ARTICLE 4] => 0
[ARTICLE 5] => 30
)
)
我试图做这样的事情,但它不起作用
foreach ($orig as $item) {
$new[] = $item;
$new[] = $item;
}
有人可以帮忙吗?
UPDATE
我尝试过这样的事情
foreach ($articles as $article)
{
$pageviews2[$article] = $pageviews;
}
其中$ pageviews2包含我的csv文件的内容,并且数组文章的结构是这样的
$articles = Array("00", "01", "02", "03","04","05");
下面是我在var_dump $ pageviews2数组中获得的结果
Array
(
[00] => Array
(
[00] => Array
(
[ARTICLE 1] => 100
[ARTICLE 2] => 50
[ARTICLE 3] => 30
)
[01] => Array
(
[ARTICLE 1] => 40
[ARTICLE 2] => 100
[ARTICLE 4] => 200
)
[02] => Array
(
[ARTICLE 1] => 30
[ARTICLE 2] => 40
[ARTICLE 3] => 30
)
[03] => Array
(
[ARTICLE 5] => 30
)
)
[01] => Array
(
[00] => Array
(
[ARTICLE 1] => 100
[ARTICLE 2] => 50
[ARTICLE 3] => 30
)
[01] => Array
(
[ARTICLE 1] => 40
[ARTICLE 2] => 100
[ARTICLE 4] => 200
)
[02] => Array
(
[ARTICLE 1] => 30
[ARTICLE 2] => 40
[ARTICLE 3] => 30
)
[03] => Array
(
[ARTICLE 5] => 30
)
)
正如您所提到的,我通常处理这种情况的方式是,用一组已知值预先填充每个“外部”元素。 这是在假设您确切知道数组第二维中需要多少个元素,并且事先知道第一维中有多少个元素的前提下进行的。 这是一些代码来演示:
$pageviews = array();
$articles = Array("00", "01", "02", "03");
$prepopulated = Array (
"Article 1" => 0,
"Article 2" => 0,
"Article 3" => 0,
"Article 4" => 0,
"Article 5" => 0
);
然后,您可以在导入csv之前创建骨架数组:
foreach ($articles as $article) {
$pageviews[$article] = $prepopulated;
}
然后,当您从csv导入数据时,您要做的就是覆盖刚创建的骨架数组中的默认值:
if (($handle = fopen("pageviews.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$pageviews[$data[0]][$data[1]] = $data[2];
}
fclose($handle);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.