別の構造化配列に変換しようとしている csv ファイルがあります。まず、次のように構築された all_data() という名前の配列に変換します。
$data = file_get_contents($id . '.csv');
$data_array = explode("\n", $data);
foreach($data_array AS $data){
$all_data[] = explode("\t", $data);
}
結果は次のようになります。
array(5) {
[0]=>
array(2) {
[0]=>
string(10) "2012-11-14"
[1]=>
string(2) "10"
}
[1]=>
array(2) {
[0]=>
string(10) "2012-11-14"
[1]=>
string(2) "10"
}
[2]=>
array(2) {
[0]=>
string(10) "2012-11-14"
[1]=>
string(2) "10"
}
[3]=>
array(2) {
[0]=>
string(10) "2012-11-14"
[1]=>
string(2) "10"
}
[4]=>
array(1) {
[0]=>
string(0) ""
}
}
そして、次のコードで im_arr() に変換します。
foreach($all_data as $key => $value){
$im_arr[$key][$value[0]] = $value[1];
}
結果:
array(5) {
[0]=>
array(1) {
["2012-11-14"]=>
string(2) "10"
}
[1]=>
array(1) {
["2012-11-14"]=>
string(2) "10"
}
[2]=>
array(1) {
["2012-11-14"]=>
string(2) "10"
}
[3]=>
array(1) {
["2012-11-14"]=>
string(2) "10"
}
[4]=>
array(1) {
[""]=>
NULL
}
}
そして最後に、別の foreach ループで探している結果が得られます。
foreach ($im_arr as $val) {
foreach ($val as $key => $val2) {
$im_data[$key]=$val2;
}
}
im_data() の結果は次のとおりです。
array(2) {
["2012-11-14"]=>
string(2) "10"
[""]=>
NULL
}
配列 im_data() はまさに all_data() から取得したいものであるため、これは完璧です。ただし、このコードをプログラムの別の部分に配置しようとしても機能しません。受け取った警告が原因である可能性があると考えています。
「PHP 通知: 未定義のオフセット: 1 in ... 93 行目」
行 93 は次の行に対応します。
$im_arr[$key][$value[0]] = $value[1];
コードの完全な部分は次のとおりです。
$all_data = array();
$im_arr=array();
$data = file_get_contents($id . '.csv');
$data_array = explode("\n", $data);
foreach($data_array AS $data){
$all_data[] = explode("\t", $data);
}
foreach($all_data as $key => $value){
$im_arr[$key][$value[0]] = $value[1]; //the line for the error
}
$im_data=array();
foreach ($im_arr as $val) {
foreach ($val as $key => $val2) {
$im_data[$key]=$val2;
}
}
var_dump($im_data);
この同じエラーについて多くの質問が投稿されていることは知っていますが、この特定のコードの問題を理解できませんでした。