代码之家  ›  专栏  ›  技术社区  ›  Matijs

PHP中的字符串连接与数组内爆

  •  6
  • Matijs  · 技术社区  · 16 年前

    在使用Java很长一段时间后,我逐条创建长字符串的标准方法是将元素添加到数组中,然后对数组进行内嵌。

    $out[] = 'a';
    $out[] = 'b';
    echo implode('', $out);
    

    但接下来有很多数据。

    (标准PHP)的替代方法是使用字符串串联。

    $out = 'a';
    $out .= 'b';
    echo $out;
    

    令我惊讶的是,这两种方法似乎没有速度差异。当有明显的时间差时,通常是连接看起来更快,但不是所有的时间。

    因此,我的问题是:除了样式和代码可读性之外,是否还有其他任何理由选择一种方法而不是另一种方法?

    5 回复  |  直到 16 年前
        1
  •  8
  •   Scott Saunders    16 年前

    对我来说,使用数组意味着要做一些简单的字符串连接无法完成的事情。例如排序、检查唯一性等。如果您没有做类似的事情,那么字符串连接在一两年内会更容易被不知道代码的人读取。他们不必怀疑阵列是否会在内爆之前被操纵。

    也就是说,当需要在单词之间建立一个逗号或“and”的字符串时,我采用内爆数组方法。

        2
  •  3
  •   erenon    16 年前

    选择可读性更强的一个。总是。这个案子,我会接第二个预约。 然后优化它,如果它是一个瓶颈。

        3
  •  2
  •   Duroth    16 年前

    在生成字符分隔字符串时,可以清楚地看到一个(细微的)差异:

    <?php
    $out[] = 'a';
    $out[] = 'b';
    echo implode(',', $out);
    
    foreach($out as $o) {
        echo $o . ',';
    }
    
    ?>
    

    第一个将打印 a,b 后者将在哪里打印 a,b, .因此,除非您像在示例中那样使用空字符串作为分隔符,否则通常首选使用 implode() .

        4
  •  2
  •   Lucas Oman    16 年前

    除了串联与内爆圣战:不,没有区别。

        5
  •  0
  •   Raz    16 年前

    这取决于您想如何处理字符串/数组以及如何创建它

    如果您从一个数组开始,需要对它进行排序/操作某些元素,那么我建议使用内爆。

    除此之外,我通常使用串联