在双引号字符串和单引号字符串中使用核心预定义常量 PHP_EOL 的正确方法是什么?

Which is the correct way of using core predefined constant PHP_EOL inside a double quoted string and single quoted string?

考虑以下使用 PHP_EOL 的代码示例:

<?php

  $juices = array("apple", "orange", "koolaid1" => "purple");
  class people {
    public $john = "John Smith";
  }

  $string = 'string';
  $people = new people();

  //In below statement dot(.) is used before PHP_EOL
  echo "$people->john drank some $juices[0] juice.".PHP_EOL;

  //In below statement comma(,) is used before PHP_EOL
  echo "The character at index -2 is $string[-2].", PHP_EOL;

?>

输出:

John Smith drank some apple juice. 
The character at index -2 is n. 

如果你仔细看上面的代码,尤其是使用 PHP_EOL 的那几行,你会发现这两个语句中 PHP_EOL 前面字符的区别。

在第一个语句中 PHP_EOL 前面有一个点 (.),而在第二个语句中它前面有一个逗号 (,)

为什么两个语句只生成相同的输出而在语法上存在这种差异?

请大神解惑

注意: 我知道核心预定义常量 PHP_EOL 用于为程序执行的平台放置正确的 'End Of Line' 符号。

echo "$people->john drank some $juices[0] juice.".PHP_EOL;

这里 .(dot) 的工作方式类似于它首先连接整个字符串然后打印。

但是到了,

echo "The character at index -2 is $string[-2].", PHP_EOL;

它不会串联。它将根据 ,

一个接一个地打印