将foreach循环的PHP输出转换为新数组

时间:2010-03-28 04:33:20

标签: php arrays foreach explode

我知道我可能错过了一些简单的东西,但我有一个foreach循环,我正在尝试修改第一个数组的值,并输出一个新的数组,其中修改为新值。

基本上我是从数组开始的: 0 => A:B 1 =>公元前 2 => C:d

我正在使用explode()删除:和第二个字母,所以我想留下一个数组: 0 =>一个 1 =>乙 2 => ç

我的函数的explode()部分工作正常,但我似乎只获得单个字符串输出。 A,B和C.

2 个答案:

答案 0 :(得分:2)

听起来你想要这样的东西?

$initial = array('A:B', 'B:C', 'C:D');
$cleaned = array();
foreach( $initial as $data ) {
  $elements = explode(':', $data);
  $cleaned[] = $elements[0];
}

答案 1 :(得分:1)

除非引用了数组,否则foreach将在指定数组的副本上运行,而不是数组本身

$arr = array( 0 => 'A:B', 1 => 'B:C', 2 => 'C:D');
// foreach($arr as $val) will not work.
foreach($arr as &$val) { // prefix $val with & to make it a reference to actual array values and not just copy a copy.
    $temp = explode(':',$val);
    $val = $temp[0];
}
var_dump($arr);

输出:

array(3) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [2]=>
  &string(1) "C"
}