Implode()vs Foreach()

时间:2014-09-19 06:58:47

标签: php arrays foreach implode

有那些语法: 的foreach:

$array=array('v1','v2','v3');
foreach( $array as $value ){
echo $value;
}

输出:

v1v2v3

内爆:

$array=array('v1','v2','v3');
$value=implode(" ",$array);
echo $value;

输出:

v1 v2 v3

我需要一些帮助来理解上面情况中使用的implode(),foreach()之间的区别。它们是否相同?或者有什么区别?我应该使用哪些?何时使用?

为了记录,我知道小的差异,以及类似的事情。我只是想知道你的意见,以及是否有一些我不了解这些功能。

5 个答案:

答案 0 :(得分:4)

通常,循环可用于进行您想要的任何操作。

例如,您可以将字符串与其他字符串依赖或数组元素连接:

$array=array('v1','v2','v3');
foreach ($array as $value) {
  if ($value == 'v1') {
    echo $value.' something';
  } 
  else {
    echo $value.' something2';
  }
}

如果数组中有数字,则可以进行数学运算:

$array=array(1,2,3);
foreach ($array as $value) {
  echo ($value + 5).' ';
}

您还可以更改数组元素:

$array=array(1,2,3);
foreach ($array as &$value) {
    $value += 3;
}
unset($value);
foreach ($array as $value ){
    echo $value.' ';
}
// result: 4 5 6 

Implode只是一个合并数组元素并在它们之间放置分割器的函数。而已。它不会改变数组元素。它简单地返回输出字符串。它通常用于准备要显示的数据。

同样implode在元素之间放置拆分器要方便得多。在循环中,如果你想在所有元素之间放置空格但你不需要在最后一个元素之后放置空格,你需要对最后一个元素进行额外检查并使用implode你不需要关心因为implode只是为你而做。

在你的情况下,输出不会相同,因为你的循环会输出: v1v2v3和implode将输出v1 v2 v3,因为您使用了空格分隔符

答案 1 :(得分:3)

foreach是一个循环语句。 implode是一个功能。这就是区别。对于数组中的每个元素,您应该使用foreach进行任何类型的操作。但是implode是一个辅助方法,它通过使用给定的字符串作为绑定来绑定给定数组的元素。

答案 2 :(得分:1)

foreach():这是一个循环概念意味着你逐个获得值并打印出来,你会发现每个结果/值是分开的,而你却没有连续。

implode():使用passsing glue将数组转换为字符串。并且您将获得一个字符串中的所有数组值。

答案 3 :(得分:1)

implode()也在内部迭代数组,并将array转换为string

循环也在这里做同样的事情,

循环优势

1)例如,当您想要条件部分时 您希望从字符串或其他操作中排除v2取决于要求

$array=array(1,2,3);
foreach ($array as $value ){
  if($value == 2) continue;
   echo $value." ";
}

这些内容不适用于implode函数

2)在循环中你可以直接缓冲输出或追加到字符串.. [这是依赖于要求],

import只是将数组值组合成字符串的函数。

答案 4 :(得分:0)

它是如何相同的,两者都用在不同的地方。例如

list($y,$m,$d)=explode("-",$query); //separating and storing in variable `y-m-d` 
$arr=array($m,$d);
$cat=implode('-',$arr); //u got that format again with only two variables 

implode期待数组。

其中foreach是一个循环,循环遍历给定的array()直到并且除非它满足false条件并且离开循环