この人頭いいなと思ったエピソード

下記のようなプログラムでCSVを出力する場合、
foreachの中の条件で'名前'の列が'鈴木'だった場合、'田中'の'住所'を'沖縄県'に変更して出力したいのですが同じループの中でさかのぼって変更することは可能ですか?
☆の部分のように$editというような新たな配列を作って、別のforeachの中で出力するしかありませんか?
実際には$listの行が10000以上になるため、出来たら1回のforeachで処理したいのですが何かいい方法はありませんか?
質問がおかしかったり、解りづらかったらすみませんが、ご教示お願いいたします。

$list = array (
array('No', '名前', '年齢', '住所'),
array('1', '田中', '18','東京都'),
array('2', '佐藤', '20','大阪府),
array('3', '鈴木', '22','神奈川県'),
array('4', '高木', '19','北海道'),
array('5', '吉田', '14','福岡県')
);

$fo = fopen('C:\works\add.csv', 'w');

foreach ($list as $fields) {
fputcsv($fo, $fields);
 $edit[] = $fields; // ☆
}

fclose($fo);

質問者からの補足コメント

  • すみません、例えが悪かったので再度質問投稿させて頂きたいと思います。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/10/27 17:25

A 回答 (1件)

条件によっては「『'田中'というデータ』がどこにあるか」を覚えておけばいいって話になる. そして, 「それ」が 1個しかないと保証されているのであればループは不必要だ.



改めて配列を作った方が簡単になるかもしれんけど.
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。
例えとして田中をあげていますが、ループの中で何十回もそのような変更を行い場所が現れる予定です。

お礼日時:2022/10/27 17:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報