Php array_rand()打印变量名

时间:2015-04-17 16:13:26

标签: php arrays random

我有一个充满不同语句的数组,我试图输出随机的一个说法。我的程序打印出随机的说法,但有时会打印出分配给说法而不是实际说法的变量名称,我不知道为什么。

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

echo $foo[array_rand($foo)];

因此,例如它将打印出应该的世界,但有时它会打印出来2。不确定我做错了什么。

3 个答案:

答案 0 :(得分:0)

在开始时删除值。将第一行更改为:

$foo = array();

你所做的是把价值观和说法1'在数组中。你不想要那些价值观。您也可以使用以下内容删除索引值:

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

这简化了你的工作。

答案 1 :(得分:0)

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

$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.
 )

答案 2 :(得分:0)

在@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)];