Как вернуть функцию внутри функции

Сделайте функцию has_twenty_ones, которая возвращает true, если хотя бы у одного из игроков в игре есть 21, в противном случае возвращает false. Эта функция должна использовать функцию fifty_ones.

function has_twenty_ones($game){
function twenty_ones($game)
{
$players_with_score_21 = [];
foreach ($game['players'] as $name => $player) {
$distance = 21 - $player['score'];
if ($distance < 0) {
continue;
}
if ($distance == 21) {
$players_with_score_21 = [$name];
}
}
return $players_with_score_21;
}
return isset($players_with_score_21);

}

как лучше всего это закодировать

0

Решение

Просто проверьте, если возврат twenty_ones функция пуста, если она возвращает ложное возвращение twenty_ones значение.

function has_twenty_ones($game){
function twenty_ones($game){
$players_with_score_21 = [];
foreach ($game['players'] as $name => $player) {
$distance = 21 - $player['score'];
if ($distance < 0) {
continue;
}
if ($distance == 21) {
$players_with_score_21 = [$name];
}
}
return $players_with_score_21;
}
$playersWithScore = twenty_ones($game);
if (!empty($playersWithScore)) {
return $playersWithScore;
} else {
return false;
}
}
2

Другие решения

Я не уверен, почему вам нужны две функции для этого.

Как уже упоминалось @RiggsFolly, вы на самом деле не вызываете функцию fifty_ones (). Почему бы не иметь следующий код:

function has_twenty_ones($game)
{
foreach($game['players'] as $name => $player)
{
$distance = 21 - $player['score'];
if ($distance < 0) {
continue;
}
// If at least one player has 21, return true.
if($distance == 21) {
return true;
}
}
return false;
}

Приведенное выше вернет true, когда встретится с игроком, набравшим 21 очко, в противном случае вернется false.

0

function twenty_ones($game)
{
$players_with_score_21 = [];
foreach ($game['players'] as $name => $player) {
$distance = 21 - $player['score'];
if ($distance < 0) {
continue;
}
if ($distance == 21) {
$players_with_score_21 = [$name];
}
}
return $players_with_score_21;
}

function has_twenty_ones($game){
if (count ($this->twenty_ones($game)) > 0 )
return true;
else
return false;
}
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector