【发布时间】:2014-01-31 10:29:57
【问题描述】:
我有一个像这样的多维数组,我想用它创建一个新数组并添加默认值。第一个数组的键是固定的(00,01,02,03),但第二个数组的键是动态值
Array
(
[00] => Array
(
[KEY 1] => 100
[KEY 2] => 50
[KEY 3] => 30
)
[01] => Array
(
[KEY 1] => 40
[KEY 2] => 100
[KEY 4] => 200
)
[02] => Array
(
[KEY 1] => 30
[KEY 2] => 40
[KEY 3] => 30
)
[03] => Array
(
[KEY 5] => 30
)
)
所以我的问题是如何将上面的数组变成这样的?
Array
(
[00] => Array
(
[KEY 1] => 10
[KEY 2] => 50
[KEY 3] => 30
[KEY 4] => 0
[KEY 5] => 0
)
[01] => Array
(
[KEY 1] => 40
[KEY 2] => 100
[KEY 3] => 0
[KEY 4] => 200
[KEY 5] => 0
)
[02] => Array
(
[KEY 1] => 30
[KEY 2] => 40
[KEY 3] => 30
[KEY 4] => 0
[KEY 5] => 0
)
[03] => Array
(
[KEY 1] => 0
[KEY 2] => 0
[KEY 3] => 0
[KEY 4] => 0
[KEY 5] => 30
)
)
我整天都在挣扎,我的头越来越累了。有人可以帮忙吗?
//这里是我正在使用的代码
CSV 文件的内容
"00","KEY 1",100
"00","KEY 2",50
"00","KEY 3",30
"01","KEY 1",40
"01","KEY 2",100
"01","KEY 4",200
"02","KEY 1",30
"02","KEY 2",40
"02","KEY 3",30
"03","KEY 5",30
这里是代码
$csvFile='export (82).csv';
$file_handle = fopen($csvFile, 'r');
while (!feof($file_handle)) {
$line_of_text[] = fgetcsv($file_handle, 1024);
}
foreach ($arr as $key => $val) {
foreach ($line_of_text as $v) {
if (!isset($val[$v]))
$arr[$key][$v] = 0;
}
}
echo"<pre>";
print_r($arr);
echo"</pre>";
// 创建多维数组的代码
$fp = fopen($csvFile, 'r');
$master = array();
while( $line = fgetcsv( $fp ) ) {
if( !isset( $master[$line[0]] ) )
$master[$line[0]] = array();
if( !isset( $master[$line[0]][$line[1]] ) )
$master[$line[0]][$line[1]] = 0;
$n = filter_var($line[2], FILTER_SANITIZE_NUMBER_INT);
$master[$line[0]][$line[1]] += $n;
}
【问题讨论】:
-
KEY 1,KEY 2... 是字符串还是整数? -
也发布有问题的
print_r($csvFile) -
您是否将数组命名为
$arr?我没看到你这样做 -
$csvFile 只是打开一个 csv 文件,文件的内容显示在我的问题中;哪个数组应该命名为 $arr ?我很困惑
-
您在问题顶部所说的多维数组
标签: php arrays loops multidimensional-array