1
foreach($arrayOne as $value){
    do function
}

上記の例では、$ arrayOneをループに渡し、$ arrayOneの一部の要素を削除する関数を操作してから、ループがfalseを返すまで残っている要素の縮小された$arrayOneをループで渡します。 。

推奨事項?

4

5 に答える 5

5

配列の一部の要素を削除する関数だけが必要ですか?

その場合は、array_filterを使用できます。

于 2008-10-23T12:16:49.270 に答える
3

配列項目の値を変更したい場合は、参照によって使用してください。配列項目を完全に削除する場合は、キーと値のペアを分割します。

$arrayOne = array('example', 'listing of', 'stuff');

foreach ($arrayOne as $key => &$value) {
    $value .= ' alteration';

    if ($value == 'listing of alteration') {
        unset($arrayOne[ $key ]);
    }

}

上記のコードは、配列内の各項目の末尾にテキスト「alteriation」を追加します。また、「変更のリスト」に一致する場合は、2 番目のインデックスを削除します。PHP 5.2 でテスト済み

于 2008-10-23T13:55:50.740 に答える
1

2つの配列を使用することをお勧めします
。1つはデータ(dataarray)
、もう1つは最初は空(emptyarray
)で、最初のforeachloopで修飾するものはすべて、2番目の配列にプッシュし、最後に最初の配列を空にして識別子を交換します2つの配列のうち(dataarrayはemptyarrayとその逆になります)、falseなどを返すまで繰り返します

于 2008-10-23T12:11:04.977 に答える
1

うさぎは、参照を使用して値を編集し、インデックスを foreach ループで設定解除するための正しい答えを持っています (私はあなたに投票しますが、これは私の最初の投稿なので、まだ 15 人の担当者がいません。申し訳ありません)。

値を編​​集する必要がある関数に参照を渡す場合は、参照を使用することを忘れないでください。配列から値を削除する場合は、配列を参照として渡す必要もあります。

これ以上参照が作成されないように、削除するかどうかについて関数がブール値を返すようにすることをお勧めします。例えば

foreach ($array AS $key => &$value) {
    //& reference only needed if execFunction must edit $value
    if (execFunction(&$value)) { 
        unset($array[$key]);
    } else {
        $value['exec_failed']+=1;
    }
}
unset($value);

また、$value 参照はループのスコープを超えて存続するため、後続の unset が設定されません。

最後に、配列を複数回ループしたいように聞こえました。ループの実行が停止する方法に注意してください。

于 2008-10-23T15:17:03.757 に答える
0

助けてくれてありがとう。unset() 関数は、最終的に、今日の特定のニーズに役立つものです。これが unset() の私の使い方の短い話です:

//array to be processed
$one=array('1','2','3');
//array of terms previously defined as a group to compare against
$against=array('1','2');

foreach($one as $key=>$value){

    //pull out matching terms   
    $match=array_intersect($one,$against);
    //my need is to sum grouped numbers
    $sum=array_sum($match);
    echo $sum."<br />";

    //remove matching terms from original array
    foreach($match as $key=>$value){
        unset($one[$key]);
    }
}
//now a parent looping function will process the remaining array elements. In this case, the only one left is '3'.
于 2008-10-23T17:21:32.243 に答える