2

おそらく簡単なものが欠けていることはわかっていますが、foreachループがあり、最初の配列の値を変更し、その変更を新しい値として新しい配列を出力しようとしています。

基本的に私は配列から始めています:0 => A:B 1 => B:C 2 => C:D

そして、explode()を使用して:と2番目の文字を削除しているので、配列を残したい:0 => A 1 => B 2 => C

関数のexplode()部分は正常に機能しますが、単一の文字列出力しか得られないようです。A、B、およびC。

4

2 に答える 2

3

このようなものが欲しいように聞こえますか?

$initial = array('A:B', 'B:C', 'C:D');
$cleaned = array();
foreach( $initial as $data ) {
  $elements = explode(':', $data);
  $cleaned[] = $elements[0];
}
于 2010-03-28T04:45:51.060 に答える
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"
}
于 2010-03-28T04:42:40.023 に答える