我需要在PHP中设置动态文件名。所以我写了一个小例子脚本来表示我面临的问题。
当我运行以下脚本时,我得到以下错误输出,并且创建的文件名为.csv
,而它应命名为0101.csv
输出:
Notice: Undefined variable: 65 in C:\xampp\htdocs\testsEight.php on line 5
Notice: Undefined variable: 65 in C:\xampp\htdocs\testsEight.php on line 7
Array ( [0] => BillClinton )
为什么将变量称为65
而不是$the_id
?我正在尝试关注these guidelines。在下面的代码中,我还尝试用${$the_id}
替换它,没有运气!
CODE:
<?php
$type = 'BillClinton';
$the_id = 0101;
file_put_contents ( 'C:/'.$$the_id.'.csv' , $type ."," , FILE_APPEND );
$file = fopen('C:/'.$$the_id.'.csv', 'r');
$line = fgetcsv($file);
array_pop($line);
if ($line !== FALSE) {
//$line is an array of the csv elements in a line. The fgetcsv() function parses a line from an open file, checking for CSV fields.The fgetcsv() function stops returning on a new line, at the specified length, or at EOF, whichever comes first.
print_r($line);//check
} else {echo 'FALSE';}
请帮我解决这个问题。
答案 0 :(得分:2)
你在$$ the_id中有额外的$,这导致调用变量名为the_id的$ the_id intead的引用。所以你需要删除它。代码如下;
<?php
$type = 'BillClinton';
$the_id = 0101;
file_put_contents ( 'C:/'.$the_id.'.csv' , $type ."," , FILE_APPEND );
$file = fopen('C:/'.$the_id.'.csv', 'r');
$line = fgetcsv($file);
array_pop($line);
if ($line !== FALSE) {
//$line is an array of the csv elements in a line. The fgetcsv() function parses a line from an open file, checking for CSV fields.The fgetcsv() function stops returning on a new line, at the specified length, or at EOF, whichever comes first.
print_r($line);//check
} else {echo 'FALSE';}
有关详情,请查看PHP documentation
答案 1 :(得分:2)
您在$
中使用了两个$$the_id
,在$the_id = 0101;
中使用了一个
&#34;为什么将变量称为65&#34;
前导零是将0101
视为八进制,因此请将其包含在引号$the_id = "0101";
答案 2 :(得分:1)
首先,你的例子是错的。 PHP将永远不会允许您定义整数,甚至不允许&#34; string-casted&#34;整数作为变量名。
您的脚本中唯一的问题是您使用双美元符号,这是对$0101
的引用(假设$the_id
是0101
字符串或整数,不会重要)。
简单的解决方案是删除您的双美元符号:
file_put_contents ( 'C:/'.$the_id.'.csv' , $type ."," , FILE_APPEND );
$file = fopen('C:/'.$the_id.'.csv', 'r');
这背后的想法是变量的名称可以是变量。这就是你的问题如何发展。
$a = 'hello';
$$a = 'world';
echo $hello; // will output 'world';
问候。