独学で始めたphpでつまづいて困っています。
phpで配列に入れた値をキーを数字で直接取ることは出来るのですが、変数で取ると意味不明な値が入ってきて困っています。
教えて頂けると助かります。よろしくお願いします。
print_r($ary['header']['h']);
Array ( [0] => 組織1, [1] => 2, [2] => 3, [3] => 組織名, [4] => 倉庫C, [5] => サブC, [6] => 倉庫名, [7] => 売上金額,n [8] => 消費税,n [9] => 粗利額,n )
print $ary['header']['h'][9]
とすると
粗利額,n
が返ります。
この状態で、下記のようなループで配列を取り出すとき、
$cnt=odbc_num_fields($rst);
for ($i=1; $i<=$cnt; $i++) {
$val = odbc_result($rst,$i);
print $i."-->".$ary['header']['h'][$i];
print "<br>";
(中略)
}
0-->組織1,
1-->2,
2-->3,
3-->組織名,
4-->倉庫C,
5-->サブC,
6-->倉庫名,
7-->売上金額,n
8-->消費税,n
9-->4307131
のように、なってしまいます。
キーの指定の仕方がおかしいのでしょうか?
No.1ベストアンサー
- 回答日時:
ちょっとおかしくない?
> for ($i=1; $i<=$cnt; $i++)
なので$iは1から回しているのに
出力は
> 0-->組織1,
と、0から出力されています。
何かへんなやっていませんか?
odbc_関数を利用していますが、とりあえず使わないで
デバッグした上で仕様通りに動いてからodbc接続してみてください
有難うございました。
ソースを省略修正しているうちに、修正箇所を間違えました。
正しくは 配列をマイナスしています。失礼しました。
$cnt=odbc_num_fields($rst);
for ($i=1; $i<=$cnt; $i++) {
$val = odbc_result($rst,$i);
$ii=$i-1;
print $ii."-->".$ary['header']['h'][$ii];
print "<br>";
(中略)
}
odbc関数部分を省略して、
$ary = parse_ini_file("test.ini", true);
print_r($ary['header']['h']);
for ($i=1; $i<=10; $i++) {
$ii= $i-1;
print $ii."-->".$ary['header']['h'][$ii];
print "<br>";
}
としたところ、
Array ( [0] => 組織1, [1] => 2, [2] => 3, [3] => 組織名, [4] => 倉庫C, [5] => サブC, [6] => 倉庫名, [7] => 売上金額,n [8] => 消費税,n [9] => 粗利額,n )
(略)
9-->粗利額,n
と正常に出ることは確認しました。
odbc関数を使った後、配列の最後にODBC関数で取得したSQLの最終列が入ってしまうんですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのカッコ[ ]の使い方について
-
$_SESSIONに二次元配列を使える...
-
postgresql関数をつかったレコ...
-
foreachのなかで次のキーを参照...
-
ファイルから指定行数分だけ読...
-
PHPで配列をPOSTデータで送った...
-
String だと「 ByRef引数の型が...
-
PHP 配列の添字に変数は使えない?
-
file_existsでファイル名の部分...
-
fgetsで取り込んだ文字をexplod...
-
PHP 多次元配列変数のデータ受...
-
配列を回すとき、最後の要素だ...
-
PHPプログラミング スペースで...
-
phpで、連想配列を普通の配列に...
-
ネストが深い時のforeachはどう...
-
CakePHPのfindの取得件数は?
-
配列のランク付け
-
エラーの原因について
-
PHPでこのコード自体に意味は無...
-
別ファイルの構造体の値を読み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
file_existsでファイル名の部分...
-
$_SESSIONに二次元配列を使える...
-
foreachのなかで次のキーを参照...
-
String だと「 ByRef引数の型が...
-
配列を回すとき、最後の要素だ...
-
配列一致(要素順番は違うが内容...
-
PHPのカッコ[ ]の使い方について
-
ネストが深い時のforeachはどう...
-
チェックボックス複数選択 mys...
-
PHPで配列をPOSTデータで送った...
-
phpで、連想配列を普通の配列に...
-
PHP 多次元配列変数のデータ受...
-
postgresql関数をつかったレコ...
-
【PHP】配列内のある値以上をカ...
-
SQL文の実行結果を変数で受けて...
-
プルダウンメニューでCSVデータ...
-
Smartyのテンプレートからjavas...
-
PHPにてクラスを配列にすること...
-
CSVデータのn番目だけの値を取...
おすすめ情報
補足します。
大変お恥ずかしいのですが、ODBC関数を使った後に配列が壊れることばかり目が行ってしまって、その後に使っている変数名が、それ以前に使っている変数 $valと被っていました。
foreach ($ary['header']['h'] as &$val){
$cols = split(",",$val);
print "<td class=h>{$cols[0]}</td>\n";
}
ここでは一時的に配列に分割するのに使うだけの変数なので、被っても問題は無いと思うのですが、同じ変数に上書きした結果、配列自体も壊れてしまうようです。なぜなのかは良く判りませんが、この部分を別の変数に変えたら正常に動作しました。
$fld = odbc_result($rst,$i);