我以对象格式从数据库中选择数据。我想循环它但我也在文本中随机包含文本。如何将该文本添加到对象中的随机位置?或者如何在循环内随机打印?
//对象数据
$ obj =(对象)[
'0' => ['name' => 'Banana'], '1' => ['name' => 'Potato'], '2' => ['name' => 'Mango']
];
//将显示附加文字
$ text ='我的随机文字';
foreach($ obj as $ d){
echo $d->name;
}
结果可以是
香蕉
马铃薯
我的随机文字
芒果
或
我的随机文字
香蕉
马铃薯
芒果
或
香蕉
我的随机文字
马铃薯
芒果
...
答案 0 :(得分:1)
我会使用随机数。见http://php.net/manual/en/function.rand.php
$rand = rand(0, count($yourArray));
然后在您的数组循环中,测试给定项目的键值与您的随机数相比如果匹配,则回显您的文本。
答案 1 :(得分:1)
只需从您的对象数据中找到一个随机位置索引。
$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;
}
希望这有助于解决您的疑问!!
答案 2 :(得分:0)
您是否有办法确定对象中存储了多少个数组?
如果是这样,请生成介于0和$numArraysInObject
- 1之间的随机数,并使用一个好的'for ($i = 0; $i < $numArraysInObject; $i++)
。当$i
与$numArraysInObject
匹配时,请打印随机文字。
$printTime = rand(0, $numArraysInObject);
for ($i = 0; $i < $numArraysInObject; $i++) {
if ($i == $printTime)
echo "My random text";
echo $d -> name;
}
答案 3 :(得分:0)
可能你正在寻找这个......
foreach($obj as $d) {
$d->name = $d->name . " " . $text; // This concates the text.
echo $d->name;
}