запрос синтаксиса функции php - PullRequest
1 голос
/ 08 октября 2011

У меня есть функция, которая передает аргумент с двумя значениями по умолчанию ...

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 разных имен людей, определенных как переменная, переданная в качестве аргумента.Какой синтаксис предполагает, что результат будет выглядеть примерно так:

Джо любит ходить в Сент-Пол и жить в доме бабушки, находясь в отпуске.

Ответы [ 4 ]

4 голосов
/ 08 октября 2011

Как насчет этого?

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

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

Демо

1 голос
/ 08 октября 2011

Вы имеете в виду что-то подобное?

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 голосов
/ 08 октября 2011

Смотрите мои комментарии в коде. Вы не сделали итератор $i допустимой переменной PHP, поэтому к сведению: все переменные 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 голосов
/ 08 октября 2011

Если я правильно читаю ваш вопрос, то все, что вам нужно, это другой параметр

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");
...