Вывести все значения в массиве php как предложение

Можно ли отобразить массив как предложение? Таким образом, между каждым из значений будет «,», за исключением того, что перед последним значением будет «и».

Я взял этот маленький кусочек кода для использования в примере:

<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

Это прекрасно работает для трех значений, но мне нужно, чтобы оно работало от 1 до 15 значений.

Спасибо

0

Решение

$carsCount = count($cars);

if ($carsCount == 1) {
$sentence = $cars[0] . '.';
} else {
$partial = array_slice($cars, 0, $carsCount-1);
$sentence = implode(', ', $partial) . ' and ' . $cars[$carsCount-1];
}

echo $sentence;
3

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

$array = array("Volvo", "BMW", "Toyota");

$sentence = '';
foreach($array as $k => $v) {
if (count($array) == 1) {
$sentence = $v;
break;
}
else if ($k == count($array)-1) {
$sentence .= 'and ' . $v;
}
else {
$sentence .= $v . ', ';
}
}

echo $sentence;

Выше возвращается следующее: Volvo, BMW и Toyota

0

Есть другой способ [короче], [быстрее].

$cars = array("Volvo", "BMW", "Toyota", "Fiat");
if (count($cars) > 1) {
$lastVal = array_pop($cars);
echo implode(",", $cars)." and ".$lastVal;
} else {
echo $cars[0];
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector