原文: PHP Implode – Convert Array to String with Join

在 PHP 中,implode() 函数是一个内置函数,它接收一个数组并将其转换为一个字符串。implode() 不修改原始数组。

不管这个数组是索引数组还是关联数组,都没有关系。只要你把数组传给 implode(),它就把所有的值连接成一个字符串。

PHP implode() 语法

implode() 接收两个参数——分隔符和你想转换为字符串的数组。

分隔符可以是任何字符或一个空字符串。只要你用引号指定它,它就是有效的。如果你没有传入分隔符,implode() 仍然有效。另一方面,数组可以是一个关联数组或一个索引数组。

注意:implode() 对嵌套数组不起作用。

implode() 的完整语法是这样的:

implode(" ", $array);

在上面的语法中,一个空格(" ")是分隔符,$array 是数组。

在索引数组中使用 Implode 的例子

在 PHP 中,索引数组就像它听起来那样——数组中的每个值都有一个自动分配的索引。如果你愿意,你也可以分配索引。

下面是 implode() 在索引数组中工作的一个例子:

<?php
$langs = array("PHP", "JavaScript", "Python", "C++", "Ruby"); 

$newLangs = implode($langs);
// 由于我们正在打印一个字符串,我们可以使用 echo 来在浏览器中显示输出结果
echo $newLangs;
?>
ss1-2

请注意,我没有传入分隔符,implode() 仍然工作正常。

在下面的例子中,我传入了一个空格、逗号和连字符作为分隔符:

<?php
$langs = array("PHP", "JavaScript", "Python", "C++", "Ruby"); 

$newLangsSpace = implode(" ", $langs);
$newLangsComma = implode(", ", $langs);
$newLangsHyphen = implode("-", $langs);

// 由于我们正在打印一个字符串,我们可以使用 echo 来在浏览器中显示输出结果
echo $newLangsSpace."<br>"."<br>";
echo $newLangsComma."<br>"."<br>";
echo $newLangsHyphen ."<br>";
?>
ss2-2

你可以看到,最好指定一个分隔符,这样你可以很好地看到这些值。

在关联数组中使用 Implode 的例子

你用一个关联数组定义了一个命名的索引。让我们看看 implode() 如何在关联数组中工作。

<?php
$person = [
    'first_name' => "Kolade",
    'last_name' => "Chris",
    'likes' => "football and Pro-wrestling",
    'email' => "kolade@gmail.com",
];
//这不是我的电子邮件。不要费心给我发信息。

$newPerson = implode(" ", $person);
echo $newPerson."<br>";
?>
ss3-2

你可以看到索引没有被打印出来。要想把索引也打印出来,你需要在打印数组的时候把数组附加到 array_keys() 方法中:

<?php
$person = [
    'first_name' => "Kolade",
    'last_name' => "Chris",
    'likes' => "football and Pro-wrestling",
    'email' => "kolade@gmail.com",
];
// 这不是我的电子邮件。不要费心给我发信息。

$newPersonValues = implode(", ", $person)."<br>";
$newPersonKeys = implode(", ", array_keys($person));

echo $newPersonKeys."<br>"; 
echo $newPersonValues;
?>
ss4-2

为了证明原始数组被修改,我将把数组和 imploded 变量一起打印出来:

<?php
$person = [
    'first_name' => "Kolade",
    'last_name' => "Chris",
    'likes' => "football and Pro-wrestling",
    'email' => "kolade@gmail.com",
];
// 这不是我的电子邮件。不要费心给我发信息。

$newPersonValues = implode(", ", $person)."<br>";
$newPersonKeys = implode(", ", array_keys($person));

echo $newPersonKeys."<br>"; 
echo $newPersonValues."<br>";

print_r($person);
?>

你可以使用 PHP View Chrome 扩展来格式化你打印的数组,这样它可以看起来更好:

phpViewer

小结

在这篇文章中,你了解了 PHP 中的 implode() 函数以及它是如何工作的。我们也看了 implode() 函数如何在索引数组和关联数组中工作,并举了一些例子。

不要忘了 implode() 对嵌套数组(多维数组)不起作用。事实上,我可以证明这一点:

<?php
$persons = array (
  array("Kolade", 22, 03),
  array("Yemi", 15, 12),
  array("Cook", 07, 01),
  array("Oliver", 19, 01)
);

$newPersons = implode($persons);
print_r($newPersons);
?>
ss6-2

它不起作用,因为 implode() 只对平面数组([ ])而不是多维数组([ [ ] ])起作用。implode 看的是第一个数组,一旦它发现第一个数组中有许多数组,它就会抛出一个错误。

谢谢你阅读本文。