我有一个数组,我想把它作为参数传递给函数。这些数组值将用于从另一个数组中提取值并显示它们。
我的职能:
function showTreadmills($listbrands) {
global $treadmills;
foreach( $treadmills as $brand=>&$features ) {
if ($brand == $listbrands) {
return '<p>'.$features["description"].'</p>';
}
}
}跑步机阵列:
$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',
]
];函数中试图从数组中提取的值:
<?php echo showTreadmills('bowflexseries3','solef85'); ?>这只会从数组中返回第一个描述,即bowflexseries3 3,我正在试图找出如何让它为bowflexseries3和solef85提取描述。我肯定这是个愚蠢的疏忽。提前感谢!
发布于 2015-03-06 21:35:44
不是将数组传递给函数,而是传递两个字符串。您需要调用array()来包装它们周围的数组:
echo showTreadmills(array('bowflexseries3','solef85'));然后,您需要更改showTreadmills。不能使用==将字符串与数组进行比较。看起来您想要测试字符串是否在数组中,所以应该是:
if (in_array($brand, $listbrands))或者,与其循环遍历$treadmills并测试它是否等于$listbands之一,您还可以循环使用$listbrands
$result = '';
foreach ($listbrands as $brand) {
if (isset($treadmills[$brand])) {
$result .= '<p>'.$treadmills[$brand]["description"].'</p>';
}
}
return $result;这是更好的,因为它循环通过较小的数组。in_array()必须进行搜索,而访问关联数组只是一种哈希查找。
注意,您需要在循环期间将结果连接到一个字符串中。如果在循环中使用return,则只返回找到的第一个品牌。
发布于 2015-03-06 21:28:17
问题是,您正在返回您的第一场比赛:
if ($brand == $listbrands) {
return '<p>'.$features["description"].'</p>';
}您需要存储所有匹配项,以便整个循环能够完成,然后将匹配的所有内容发回。
$matches = '';
foreach( $treadmills as $brand=>&$features ) {
if ($brand == $listbrands) {
$matches .= '<p>'.$features["description"].'</p>';
}
}
return $matches;发布于 2015-03-06 21:28:48
function showTreadmills($listbrands) {
global $treadmills;
$out = '';
foreach( $treadmills as $brand=>&$features ) {
if ($brand == $listbrands) {
$out .= '<p>'.$features["description"].'</p>';
}
}
return $out;
}https://stackoverflow.com/questions/28907951
复制相似问题