首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果条件满足,则从多维数组中获取随机数组值

如果条件满足,则从多维数组中获取随机数组值
EN

Stack Overflow用户
提问于 2015-03-19 19:22:55
回答 3查看 59关注 0票数 0

我有一个类似这样的数组:

代码语言:javascript
运行
复制
$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。

到目前为止,我得到的是:

代码语言:javascript
运行
复制
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,而不是洗牌,但每次它只会吸引第一台跑步机和数组中的细节。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-19 19:29:21

然后你需要完全抽出一个随机跑步机,而不是单个的属性。

代码语言:javascript
运行
复制
foreach( $treads as $brand => $defaulttread2 ) {
    if($treads[$brand]['discontinued'] != '1') {
        return $defaulttread2;
    }
}

然后调用函数一次,并在此之后单独回显属性:

代码语言:javascript
运行
复制
$treadmill = treadDetails();
echo $treadmill['brand'];
echo $treadmill['description'];
echo $treadmill['image'];

当然,您可能希望现在重命名您的函数,并删除$a参数。

如果是我,我会重写这个方法,如下所示:

代码语言:javascript
运行
复制
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

票数 0
EN

Stack Overflow用户

发布于 2015-03-19 19:30:17

如果需要从该数组中随机输入一个条目,请尝试如下:

代码语言:javascript
运行
复制
$randomKey = array_rand($treads, 1);

echo $treads[$randomKey]['brand']; 
票数 0
EN

Stack Overflow用户

发布于 2015-03-19 19:31:12

不完全确定这是否是你想要的,但据我理解,这是你想要的。

代码语言:javascript
运行
复制
 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'];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29153251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档