Как передать ассоциативный массив в аргумент функции в PHP - PullRequest
0 голосов
/ 21 апреля 2020

Можно ли передать имя ассоциативного массива в аргумент функции в PHP? У меня есть следующий массив, и я хочу отобразить все фильмы в разделе «Комедия». Например, я хочу, чтобы filmsInCategory("comedy") вернул все фильмы в категории комедий.

$film = array(
  "comedy" => array(
    0 => "Pink Panther",
    1 => "john English",
    2 => "See no evil hear no evil"
  ),

  "action" => array (
    0 => "Die Hard",
    1 => "Expendables"
  ),

  "epic" => array (
    0 => "The Lord of the rings"
  ),

  "Romance" => array(
    0 => "Romeo and Juliet"
  )
);

//print_r($film);

$category;

function filmsInCategory($category) {
  echo $film[$category];
}

filmsInCategory("comedy");

foreach ($film as $key => $value) {
  echo $key . " = " . $value . "<br>";
  echo "Should output: " . $film["comedy"];
}

?>

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Моя переменная вышла из области видимости. Я поместил его внутри функции вместо

function filmsInCategory($category) {
  $film = array(
    "comedy" => array(
      0 => "Pink Panther",
      1 => "john English",
      2 => "See no evil hear no evil"
    ),

    "action" => array (
      0 => "Die Hard",
      1 => "Expendables"
    ),

    "epic" => array (
      0 => "The Lord of the rings"
    ),

    "Romance" => array(
      0 => "Romeo and Juliet"
    )
  );
  // print_r($film);


  if ( array_key_exists($category, $film) ) {
    echo $category . " exists" . "<br>";

    foreach ($film[$category] as $key => $value) {
      echo $value . "<br>";
    }
  }
}

filmsInCategory("action");

?>


0 голосов
/ 21 апреля 2020

Что не так с

foreach ($film as $key => $value) {
    //$key here is the string "comedy" / $value here is the inner array
    filmsInCategory($key);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...