【问题标题】:Echo all values in php array as a sentence将php数组中的所有值作为一个句子回显
【发布时间】:2014-10-11 20:36:32
【问题描述】:

是否可以将数组显示为句子?所以在每个值之间会有“,”,除了在最后一个值之前会有“和”。

我已将这段小代码用于示例中:

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

这适用于三个值,但我需要它适用于 1 到 15 个值。

谢谢

【问题讨论】:

    标签: php arrays echo


    【解决方案1】:
    $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;
    

    【讨论】:

    • 在只有一个值之前效果很好。然后它显示“和丰田”。
    • 非常感谢朋友。工作出色。你也是好人缘。
    【解决方案2】:
    $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;
    

    以上返回以下内容:沃尔沃、宝马和丰田

    【讨论】:

      【解决方案3】:

      还有另一种方式[更短],[更快]。

      $cars = array("Volvo", "BMW", "Toyota", "Fiat");
      if (count($cars) > 1) {
          $lastVal = array_pop($cars);
          echo implode(",", $cars)." and ".$lastVal;
      } else {
          echo $cars[0];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-09
        • 1970-01-01
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 1970-01-01
        • 2018-09-04
        • 2011-04-11
        相关资源
        最近更新 更多