为什么输出不是字符串

时间:2014-08-19 15:02:38

标签: php

我尝试了很多次,但是我还是不明白为什么输出不是字符串,什么都不对?帮帮我查一下最终输出应为大写名称字符串

<html>
<p>
<?php
// Create an array and push on the names
// of your closest family and friends
$name = array();
array_push($name,"Mike");
array_push($name,"Jane");
array_push($name,"Jack");
array_push($name,"Nike");
array_push($name,"Ash");
array_push($name,"Chris");
array_push($name,"Zark");




// Sort the list
sort($name);
join(",",$name);


// Randomly select a winner!
$random = count($name,rand(0,7));
// Print the winner's name in ALL CAPS
$winner = strtoupper($random);
print($winner);
?>
</p>
</html>

1 个答案:

答案 0 :(得分:11)

$random = count($name,rand(0,7));

此行指定$name中元素的数量。除了这里的数字之外,我不知道你还期待什么回来。

你真正想要的是什么:

echo strtoupper($name[array_rand($name)]);

http://php.net/manual/en/function.array-rand.php


其他注释:

  • 您对join()的来电并没有做任何有用的事情,因为您没有对返回值做任何事情。
  • 如果您之后只是选择一个随机条目,那么您对sort的来电毫无意义。
  • 为您的阵列名称选择一个复数名称,以便您知道它们是数组。 $names代替$name
  • 如果您提前知道所有数组元素,则不需要array_push(),只需使用数组文字:array('Mike', 'Jane', /* etc */)
  • 如果您要将数据输出到HTML上下文中,请始终使用htmlspecialchars()确保正确转义任何保留字符。这不是您在这里所拥有的代码的问题,但只要您想输出<"
相关问题