在PHP中,explode(implode())有意义吗?

4

我在Phoronix Test Suite中找到了这段代码:

$os_packages_to_install = explode(' ', implode(' ', $os_packages_to_install));

我以前见过它,但不知道它有什么作用。它是做什么的?

5个回答

8

它将返回一个数组,但与$os_packages_to_install的区别在于,如果$os_packages_to_install的值包含空格,则也会被分割。

因此:

["hjk jklj","jmmj","hl mh","hlm"]

implode的作用:

"hjk jklj jmmj hl mh hlm

再次使用explode函数将会得到以下结果:
["hjk","jklj","jmmj","hl","mh","hlm"]

数组将被重新索引,正如其他人在下面指出的那样。 - f.ardelian

6
一次谷歌搜索找到了这行代码的含义:
重新构建数组索引,因为某些操作系统软件包的XML标签在单个字符串中提供多个软件包名称。
基本上,这是因为原始数组可能看起来像这样:
$os_packages_to_install = array(
  'package1',
  'package2 package3'
);

当需要呈现如下效果时:
$os_packages_to_install = array(
  'package1',
  'package2',
  'package3'
);

来源: http://www.phorogit.com/index.php?p=phoronix-test-suite.git&dl=plain&h=7c5f0c0cf91dc61c1f220b0871040d4441836436.

这是一个关于Phoronix测试套件的链接,可以在此处下载该软件包。

1

如果输入的数组是关联数组,它可能会返回:

$os_packages_to_install = array('key'=>'val1','val2','val3');
var_dump($os_packages_to_install);
var_dump(explode(' ', implode(' ', $os_packages_to_install)));

输出为:

array(3) { ["key"]=> string(4) "val1" [0]=> string(4) "val2" [1]=> string(4) "val3" }
array(3) { [0]=> string(4) "val1" [1]=> string(4) "val2" [2]=> string(4) "val3" } 

1

是的,如果数组$os_packages_to_install中的字符串包含空格字符。


0

如果字符串包含空格,例如:

$str[0] = "abcd bce";
$str[1] = "bcde sdf";

如果执行您的命令,则会将其拆分为具有4个记录的数组,而不是拆分为2个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接