Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么输出不是字符串_Php - Fatal编程技术网

Php 为什么输出不是字符串

Php 为什么输出不是字符串,php,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,

我试了很多次,但我仍然不明白为什么输出不是字符串,有什么问题吗?帮我检查一下。最终输出应为大写名称字符串

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


此行指定
$name
中的元素计数。我不知道除了这里的一个号码,你还想得到什么

你真正想要的是:

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


其他说明:

  • 您对
    join()
    的调用没有做任何有用的事情,因为您没有对返回值进行任何操作
  • 如果以后只是随机选取一个条目,那么对
    排序的调用就没有意义了
  • 为数组名称选择复数名称,以便知道它们是数组
    $names
    而不是
    $name
  • 如果您提前知道所有数组元素,则无需使用
    array\u push()
    ,只需使用数组文本:
    array('Mike','Jane',/*等*/)

  • 如果要将数据输出到HTML上下文中,请始终使用
    htmlspecialchars()
    确保所有保留字符都正确转义。这里的代码没有问题,但只要您想输出
    $random=count($name,rand(0,7))你想在这里做什么<代码>$random=$name[rand(0,count($name))]可能就是你想要的。另外,删除
    join(',',$name)
    行,因为它什么也不做之后是所有那些
    array\u push
    调用?为什么不
    $name=array('name 1','name 2',…)即使如此:为什么不
    $name[]='addname'?这至少避免了函数调用。几乎是逐字逐句地输入。看起来你确实知道他们希望得到什么。每次我读到array_rand并记住我手动完成相同任务的次数,这(你的答案)将减少大量代码;回答得好。
    
    echo strtoupper($name[array_rand($name)]);