2011-10-07 64 views
1

我有经过了两个默认值参数的函数...PHP函数语法查询

function places($location="Minneapolis", $lodging="Mom's house") 
{ 
    echo "enjoys going to {$location} and staying at {$lodging} while on vacation."; 
} 
places("St. Paul","Grandma's house"); 

我需要使用定义为通过一个可变的10个人不同的名字来传递功能的10倍论据。语法假设输出类似于这个:

乔喜欢去圣保罗,并在度假期间住在奶奶的家。

+0

首先,我建议你不要在函数中使用'echo';相反,返回一个字符串或创建的字符串数组。 –

回答

0

看到代码我的意见。您没有将$i迭代器设置为有效的PHP变量,所以FYI:所有PHP变量的前缀必须为$

<?php 

// You declare your functions typically in the global scope, not 
// within a for or any other loop. 
// NOTE: $name is a required function parameter in this function. 

function places($name, $location="Minneapolis", $lodging="Mom's house") { 
    return "$name enjoys going to $location and staying at $lodging while on vacation."; 
} 

// Note, I've got $people setup to have arrays that can be passed 
// containing a "name, city, hotel" syntax. This is equivalent to 
//  $people[loop index][0] ~ $people[loop index][name] 
//  $people[loop index][1] ~ $people[loop index][city] 
//  $people[loop index][2] ~ $people[loop index][hotel] 

$people = array(
    array("James", "Brooklyn", "Granada Inn"), 
    array("Betsy", "Memphis", "Tennessee Hotel"), 
    array("Andrew", "San Francisco", "101 Hotel"), 
    array("Marvin", "San Diego", "Oceanview Beach Resort"), 
    array("Sara", "Orlando", "Disney World"), 
    array("Alicia", "Hilton Head", "Vincent Inn") 
); 

// Cache the count of the $names array members 

$c_people = count($people); 

// Loop and echo. 

for ($i = 0; $i < $c_people; $i++) { 
    echo places($people[$i][0], $people[$i][1], $people[$i][2]) . "\n"; 
} 

?> 

http://codepad.org/QHh83cKz

产出

James enjoys going to Brooklyn and staying at Granada Inn while on vacation. 
Betsy enjoys going to Memphis and staying at Tennessee Hotel while on vacation. 
Andrew enjoys going to San Francisco and staying at 101 Hotel while on vacation. 
Marvin enjoys going to San Diego and staying at Oceanview Beach Resort while on vacation. 
Sara enjoys going to Orlando and staying at Disney World while on vacation. 
Alicia enjoys going to Hilton Head and staying at Vincent Inn while on vacation. 
+0

嘿Jared!是的,这个是很棒的。非常感谢。我现在知道很少的PHP并参加了几个在线课程。我知道有几种编码方式,而这正是我设想的这种操作方式。再次感谢! –

+0

确保并将其标记为答案(通过单击此答案旁边的勾选的复选标记)并注册。 ':)' –

1

你的意思是这样的吗?

function places($location="Minneapolis", $lodging="Mom's house") 
{ 
    echo "enjoys going to {$location} and staying at {$lodging} while on vacation.\n"; 
} 

$loc = array(
    array('location'=>'St. Paul1', 'lodging' => 'Grandma\'s house1'), 
    array('location'=>'St. Paul2', 'lodging' => 'Grandma\'s house2'), 
    array('location'=>'St. Paul3', 'lodging' => 'Grandma\'s house3'), 
    array('location'=>'St. Paul4', 'lodging' => 'Grandma\'s house4'), 
    array('location'=>'St. Paul5', 'lodging' => 'Grandma\'s house5'), 
    // etc 
); 

foreach($loc as $i) 
{ 
    places($i['location'], $i['lodging']); 
} 
0

如果我正确地读你的问题,那么所有你需要的是另一种参数

function places($location="Minneapolis", $lodging="Mom's house", $name="Bob") 
{ 
    echo "{$name} enjoys going to {$location} and staying at {$lodging} while on vacation."; 
} 
places("St. Paul","Grandma's house","Joe"); 
4

怎么这样呢?

$names = explode(',', 'James ,Betsy ,Andrew ,Marvin ,Alicia ,etc... '); 

foreach($names as $name) 
{ 
    echo $name, places(), '<br>'; 
} 

Demo

+0

这是伪代码吗? –

+0

这是伪代码,我把它压缩成了工作代码。 – hakre

+0

@hakre - 好吧,按分类排序。我会假设每个名称都应该是它自己的数组成员,并且函数参数不会被用于数组或其他任何方式。 –