【发布时间】:2018-09-10 13:09:24
【问题描述】:
尝试将一组从十进制转换为十六进制的数字写入 .csv 文件。 以下代码会将所需的输出放入浏览器中;
for ($i=0;$i<=15;$i++ ) {
for ($j=0;$j<=15;$j++ ) {
echo dechex($i).",".dechex($j)." - ";}}
A portion of browser output is attached. from '0,0' to 'f,f'.
以下代码旨在将(与浏览器的输出相同)写入 .csv 文件,进入无限循环。感谢您的帮助。
$file = "colors.csv";
$FH = fopen ($file, 'w') or die ("$file cannot be opened for writing.");
for ($i=0;$i<=15;$i++ ) {
for ($j=0;$j<=15;$j++ ) {
$i=dechex($i);
$j=dechex($j);
fwrite ($FH, "$i");
fwrite ($FH, ",");
fwrite ($FH, "$j");
fwrite ($FH, "\n");}}
@Mark Baker,@Nico Hasse,(10 小时后)感谢您的输入,以下代码 工作中。主要的尊重是:
1-fopen() 被放置在两个for() 循环内。
2-在fwrite($FH,"w")中,“w”改为“a”
3- 至于$i,$j>9,十六进制#s 不能通过常规方式递增,
在循环结束时,$i,$j 被转换回十进制。
`for ($i=0;$i<=15;$i++ ) {
for ($j=0;$j<=15;$j++ ) {
$file = "colors.csv";
$FH = fopen ($file, "a") or die ("$file cannot be opened for writing.");
$i=dechex($i);
$j=dechex($j);
fwrite($FH, $i.",".$j."\n");
$i=hexdec($i);
$j=hexdec($j);
fclose($FH);}
}`
【问题讨论】:
-
你试过什么来调试这个问题?请为您的代码使用更好的格式
-
使用临时变量而不是
$i=dechex($i)和$j=dechex($j);(例如$tmpI=dechex($i)和$tmpJ=dechex($j);),否则您正在修改用于循环计数的值应该算数 -
或者使用
fwrite ($FH, dechex($i));和fwrite ($FH, dechex($j)); -
并注意 csv 文件行应该以
\n结尾,而不是 html<br> -
@MarkBaker:感谢您的建议。使用
$tmpI=dechex($i),我又得到了无限循环,使用fwrite($FH, dechex($i)),我得到了致命错误 Function name must be a string in C:...test4.php 在线。