PHP:创建动态(变量)文件名 - 未定义变量:65

时间:2014-08-23 20:40:34

标签: php file csv filenames variable-variables

我需要在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';}

请帮我解决这个问题。

3 个答案:

答案 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_id0101字符串或整数,不会重要)。

简单的解决方案是删除您的双美元符号:

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';

问候。