首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用数组作为函数参数php

使用数组作为函数参数php
EN

Stack Overflow用户
提问于 2015-03-06 21:25:54
回答 3查看 37关注 0票数 0

我有一个数组,我想把它作为参数传递给函数。这些数组值将用于从另一个数组中提取值并显示它们。

我的职能:

代码语言:javascript
复制
function showTreadmills($listbrands) {
    global $treadmills;
    foreach( $treadmills as $brand=>&$features ) {
        if ($brand == $listbrands) { 
            return '<p>'.$features["description"].'</p>';
        }
    }
}

跑步机阵列:

代码语言:javascript
复制
$treadmills = [
    'bowflexseries3' => [
        'description' => 'Bowflex Series 3',
        'image' => '/images/bowflex-series-3-150x150.jpg',
        'url' => '/treadmills/bowflex/series-3',

    ],
    'solef85' => [
        'description' => 'Sole F85',
        'image' => '/images/sole-f85-150x150.jpg',
        'url' => '/treadmills/sole/f-85',
    ],
    'endurancet10hrc' => [
        'description' => 'Endurance T10HRC',
        'image' => '/images/endurance-t10hrc-150x150.jpg',
        'url' => '/treadmills/endurance/t10hrc',
    ]
];

函数中试图从数组中提取的值:

代码语言:javascript
复制
 <?php echo showTreadmills('bowflexseries3','solef85'); ?>

这只会从数组中返回第一个描述,即bowflexseries3 3,我正在试图找出如何让它为bowflexseries3和solef85提取描述。我肯定这是个愚蠢的疏忽。提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-06 21:35:44

不是将数组传递给函数,而是传递两个字符串。您需要调用array()来包装它们周围的数组:

代码语言:javascript
复制
echo showTreadmills(array('bowflexseries3','solef85'));

然后,您需要更改showTreadmills。不能使用==将字符串与数组进行比较。看起来您想要测试字符串是否在数组中,所以应该是:

代码语言:javascript
复制
if (in_array($brand, $listbrands))

或者,与其循环遍历$treadmills并测试它是否等于$listbands之一,您还可以循环使用$listbrands

代码语言:javascript
复制
$result = '';
foreach ($listbrands as $brand) {
    if (isset($treadmills[$brand])) {
        $result .= '<p>'.$treadmills[$brand]["description"].'</p>';
    }
}
return $result;

这是更好的,因为它循环通过较小的数组。in_array()必须进行搜索,而访问关联数组只是一种哈希查找。

注意,您需要在循环期间将结果连接到一个字符串中。如果在循环中使用return,则只返回找到的第一个品牌。

票数 0
EN

Stack Overflow用户

发布于 2015-03-06 21:28:17

问题是,您正在返回您的第一场比赛:

代码语言:javascript
复制
if ($brand == $listbrands) { 
        return '<p>'.$features["description"].'</p>';
}

您需要存储所有匹配项,以便整个循环能够完成,然后将匹配的所有内容发回。

代码语言:javascript
复制
$matches = '';
foreach( $treadmills as $brand=>&$features ) {
    if ($brand == $listbrands) { 
        $matches .= '<p>'.$features["description"].'</p>';
    }
}
return $matches;
票数 0
EN

Stack Overflow用户

发布于 2015-03-06 21:28:48

代码语言:javascript
复制
function showTreadmills($listbrands) {
    global $treadmills;

    $out = '';
    foreach( $treadmills as $brand=>&$features ) {
        if ($brand == $listbrands) { 
            $out .= '<p>'.$features["description"].'</p>';
        }
    }

    return $out;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28907951

复制
相关文章

相似问题

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