我有一个类似这样的数组:
$treadmills = [
'bowflexseries3' => [
'brand' => 'Bowflex',
'description' => 'Bowflex Series 3',
'image' => '/images/bowflex-series-3-150x150.jpg',
'discontinued' => '0'
],
'bowflexseries5' => [
'brand' => 'Bowflex',
'description' => 'Bowflex Series 5',
'image' => '/images/bowflex-series-5-treadmill-review-150x150.jpg',
'discontinued' => '1'
],
'bowflextc10' => [
'brand' => 'Bowflex',
'description' => 'Bowflex Treadclimber TC10',
'image' => '/images/bowflex-treadclimber-tc10-review-150x150.jpg',
'discontinued' => '0'
]
];
我试图随机提取一个跑步机和它的细节(品牌,描述,形象),如果停止= 0。
到目前为止,我得到的是:
function treadDetails($a) {
global $treadmills;
$treads = $treadmills;
shuffle($treads);
foreach( $treads as $brand=>$defaulttread2 ) {
if($treads[$brand]['discontinued'] != '1') {
return $defaulttread2[$a];
}
}
}
echo treadDetails('brand');
echo treadDetails('description');
echo treadDetails('image');
以上并不完全有效,因为它从不同的跑步机随机提取细节。我不想混淆细节,所以如果它随机选择bowflextc10,那么它应该显示“bowflextc10 TC10”和“bowflextc10”
我尝试了array_rand,而不是洗牌,但每次它只会吸引第一台跑步机和数组中的细节。
发布于 2015-03-19 19:29:21
然后你需要完全抽出一个随机跑步机,而不是单个的属性。
foreach( $treads as $brand => $defaulttread2 ) {
if($treads[$brand]['discontinued'] != '1') {
return $defaulttread2;
}
}
然后调用函数一次,并在此之后单独回显属性:
$treadmill = treadDetails();
echo $treadmill['brand'];
echo $treadmill['description'];
echo $treadmill['image'];
当然,您可能希望现在重命名您的函数,并删除$a
参数。
如果是我,我会重写这个方法,如下所示:
function randomTreadmill() {
global $treadmills;
// Filter out discontinued treadmills
$filtered = array_filter($treadmills, function($treadmill) {
return $treadmill['discontinued'] == 0;
});
// Shuffle, and return the first one
shuffle($filtered);
return array_shift($filtered);
}
工作示例:http://3v4l.org/mkcuK
发布于 2015-03-19 19:30:17
如果需要从该数组中随机输入一个条目,请尝试如下:
$randomKey = array_rand($treads, 1);
echo $treads[$randomKey]['brand'];
发布于 2015-03-19 19:31:12
不完全确定这是否是你想要的,但据我理解,这是你想要的。
function treadDetails() {
global $treadmills;
$treads = $treadmills;
shuffle($treads);
foreach( $treads as $tread ) {
if($tread['discontinued'] != '1') {
return $tread;
}
}
}
product = treadDetails();
echo product['brand'];
echo product['description'];
echo product['image'];
https://stackoverflow.com/questions/29153251
复制相似问题