Php array_rand() 打印变量名

Php array_rand() printing variable name

我有一个数组,里面装满了不同的谚语,我试图随机输出其中一个谚语。我的程序打印出随机语句,但有时它会打印出分配给语句的变量名称而不是实际语句,我不确定为什么。

$foo=Array('saying1', 'saying2', 'saying3');
$foo['saying1'] = "Hello.";
$foo['saying2'] = "World.";
$foo['saying3'] = "Goodbye.";

echo $foo[array_rand($foo)];

例如,它会按原样打印 World,但其他时候会打印 saying2。不确定我做错了什么。

删除开头的值。将第一行更改为:

$foo = array();

您所做的是将值 'saying1' 等放入数组中。你不希望那些值在那里。您还可以删除索引值:

$foo[] = 'Hello.';
$foo[] = 'World.';

这会简化您的工作。

您在第一行以错误的方式声明了您的数组。 如果您想将数组用作关联数组:

$foo=Array('saying1' => array (), 'saying2' => array(), 'saying3' => array());

或者你可以选择 Kainaw 给出的非关联风格。

编辑:在非关联数组上调用它:

echo("<pre>"); print_r($foo); echo("</pre>");

作为输出:

Array
(
    [0] => saying1
    [1] => saying2
    [2] => saying3
    [saying1] => Hello.
    [saying2] => World.
    [saying3] => Goodbye.
 )

根据@Answers_Seeker所说的内容,要让您的代码按您期望的方式工作,您必须使用以下方法之一重新声明和初始化您的数组:

$foo=array('saying1'=>'Hello.', 'saying2'=>'World.', 'saying3'=>'Goodbye.');

或者这样:

$foo=array();
$foo['saying1'] = "Hello.";
$foo['saying2'] = "World.";
$foo['saying3'] = "Goodbye.";

然后,随机打印内容:

echo $foo[array_rand($foo)];