该数组显示计数编号而不是$ name

时间:2014-11-12 20:45:22

标签: php arrays

这是通过codecadamey教程,它没有完全解释或没有正确的代码供我查找,所以这就是我在这里发布的原因。我已经尝试在他们的论坛上发帖,但没有像我在这里那样方便快捷或正确的答案。

以下是与该项目相关的代码' :

<html>
<p>
<?php
// Create an array and push on the names
// of your closest family and friends
$names = array();
array_push($names, "brittany"); 
array_push($names, "nane");
array_push($names, "pops");
array_push($names, "timothy");
array_push($names, "patrick");
array_push($names, "cyndie");
array_push($names, "dad");
array_push($names, "mindy");
array_push($names, "gunner");
array_push($names, "nick");
array_push($names, "mark");
array_push($names, "scott");
array_push($names, "joe");
array_push($names, "dodi");
array_push($names, "cory");
array_push($names, "joey");
array_push($names, "taylor");
array_push($names, "tony");
array_push($names, "lynn");
array_push($names, "ella");
array_push($names, "zachary");
array_push($names, "corey");

count($names);    
// Sort the list
sort($names);
// Randomly select a winner!
$winner = rand(0, 21);
// Print the winner's name in ALL CAPS
print strtoupper($winner);
?>
</p>

此代码的结果应该显示在$ names数组(array_push)中的名称,但它不会。此代码的结果仅显示1到22之间的数字。

例如我在预览屏幕中看到的内容是这样的:

9

非常感谢所有答案和回复!

最好的问候,
CODI

2 个答案:

答案 0 :(得分:5)

您只是显示随机数。

尝试

print strtoupper($names[$winner]);

并且您想使用$count减去1作为rand()的上限:

// Count the list
$count = count($names);    
// Sort the list
sort($names);
// Randomly select a winner!
$winner = rand(0, $count - 1);
// Print the winner's name in ALL CAPS
print strtoupper($names[$winner]);

答案 1 :(得分:0)

Winner只是1到21之间的数字。您需要数组的值:

echo $names[$winner];
echo $names[ rand(0,21) ];

我建议您将代码更改为更好的可维护代码:

$names = array('joe','john','martin', 'Thor');
$contestants = count($names); // now we know the amount of names
$winner = rand(0, $contestants-1); // use the amount of names (minus 1 for 0-based index)
echo $names[$winner]; // echo the name