<?php
$greeting = "Hello";
$place = "World";
$num = 3;
$data = array(
0 => "zero",
1 => "one"
);
echo "<pre>";
echo $greeting;
echo "\n\n";
echo '$greeting' . "$place";
echo "\n\n";
echo $num * 8;
echo "\n\n";
echo "Greeting\nWorld";
echo "\n\n";
echo $data['$num'].'is a \n number';
echo "\n\n";
echo "It's" . "$data[1]" . "small" . "$place";
echo "\n\n";
echo $data;
echo "\n\n";
echo substr($hello . " and good luck! ", 3, 15);
echo "\n\n";
echo "<pre>";
?>
以下是我为测试目的而收到的PHP代码。我逐字复制代码,但由于某种原因,我得到以下错误:
注意:未定义的索引:第18行的C:\ xampp \ htdocs \ test.php中的$ num
注意:第22行的C:\ xampp \ htdocs \ test.php中的数组到字符串转换
注意:未定义的变量:第24行的C:\ xampp \ htdocs \ test.php中的hello
这是一个关于中期的问题,我应该解释输出。这些错误可能是故意的,但我不明白为什么。有人可以解释为什么会发生这些错误吗?
答案 0 :(得分:1)
注意:未定义的索引:第18行的C:\ xampp \ htdocs \ test.php中的$ num
单引号使其成为字符串文字,并且不插入变量:
echo $data[$num].'is a \n number';
注意:第22行的C:\ xampp \ htdocs \ test.php中的数组到字符串转换
$data
是一个数组,而不是一个字符串。所以你不能像字符串那样回应它:
print_r($data);
注意:未定义的变量:第24行的C:\ xampp \ htdocs \ test.php中的hello
您永远不会声明$hello
,因此它显然不存在,您无法使用它。将其声明为空字符串或删除尝试使用它的代码。
$hello = '';
答案 1 :(得分:0)
'$num'
和"$num"
不一样。在'$num'
PHP尝试不要找到变量。
答案 2 :(得分:0)
第一个错误引用字符串“$ num”不在数组中:
array('$num' => 0)
这应该是$ data [$ num]。
字符串转换发生在
上echo $data;
你试图输出一个数组,这就是它说明数组到字符串转换的原因。
最后,$ hello变量从未被定义过!
答案 3 :(得分:0)
我在要纠正的行旁边添加了一些评论。
<?php
$greeting = "Hello";
$place = "World";
$num = 0; //It should be 1 or 0 because you are using it as index for $data array
$data = array( // or you can use $data = array("zero","one");
0 => "zero",
1 => "one"
);
echo "<pre>";
echo $greeting;
echo "\n\n";
echo $greeting . "$place"; //Single quotes display the text as it is, so echo '$variable' displays $variable, however echo "$variable" display the content of variable.
echo "\n\n";
echo $num * 8;
echo "\n\n";
echo "Greeting\nWorld";
echo "\n\n";
echo $data[$num].'is a \n number'; //$num is a variable, you should not put it in singe quotes
echo "\n\n";
echo "It's" . $data[1] . "small" . $place; //No need for the double quotaions
echo "\n\n";
print_r($data); //You can't echo an array, you can use print_r instead
echo "\n\n";
echo substr($greeting . " and good luck! ", 3, 15); //$hello is not defined anywhere
echo "\n\n";
echo "<pre>";
?>