尝试回显数组数据时出错

时间:2014-04-11 23:06:03

标签: php arrays

<?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

这是一个关于中期的问题,我应该解释输出。这些错误可能是故意的,但我不明白为什么。有人可以解释为什么会发生这些错误吗?

4 个答案:

答案 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)

PHP中的{p> '$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>";
?>