繁体   English   中英

PHP在循环内随机打印一次文本

[英]PHP print text randomly once inside a loop

我从数据库中选择了对象格式的数据。 我想循环播放,但我也将文本随机包含到显示中。 如何将文本添加到对象中的随机位置? 或者如何在循环内随机打印一次?

//对象数据

$ obj =(对象)[

 '0' => ['name' => 'Banana'], '1' => ['name' => 'Potato'], '2' => ['name' => 'Mango'] 

];

//将显示附加文本

$ text ='我的随机文本';

foreach($ obj as $ d){

  echo $d->name; 

}

结果可以是

  • 香蕉

  • 土豆

  • 我的随机文字

  • 芒果

要么

  • 我的随机文字

  • 香蕉

  • 土豆

  • 芒果

要么

  • 香蕉

  • 我的随机文字

  • 土豆

  • 芒果

...

我会使用一个随机数。 参见http://php.net/manual/en/function.rand.php

$rand = rand(0, count($yourArray));

然后在您的数组循环中,测试给定项目的键值是否与您的随机数比较(如果匹配),并回显您的文本。

只需像这样从对象数据中找到一个随机位置索引。

$randPos = rand(0, count($obj)-1);

并在通过外观访问它的同时,将随机文本放在该对象数据的随机索引之后。

//addition text will be displayed

$text = 'My random text';

foreach($obj as $k => $d) {
   echo $d->name; 
   if($k == $randPos) echo $text;
}

希望这将有助于解决您的查询!

您是否有办法确定对象中存储了多少个数组?

如果是这样,则生成一个介于0到$numArraysInObject -1之间的随机数,并for ($i = 0; $i < $numArraysInObject; $i++)使用一个好的ol'。 $i$numArraysInObject匹配时,输出您的随机文本。

$printTime = rand(0, $numArraysInObject);
for ($i = 0; $i < $numArraysInObject; $i++) {
    if ($i == $printTime)
        echo "My random text";
    echo $d -> name;
}

可能是您在寻找这个..

foreach($obj as $d) {

 $d->name = $d->name . " " . $text;  // This concates the text.
 echo $d->name; 

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM