
<?php
// 自分の得意な言語で
// Let's チャレンジ!!
/*
・ 1 行目では、paiza君のクラスの人数 N と名前更新の回数 K が与えられます。
*/
//get data
$t = explode(" ", str_replace(array("\r\n","\r","\n"), '', trim(fgets(STDIN))));
//print_r($t);
$num = $t[0];
$changing_num = $t[1];
for ($i = 0; $i < $num; $i++) {
$s = trim(fgets(STDIN));
$s = str_replace(array("\r\n","\r","\n"), '', $s);
$s = explode(" ", $s);
$users[] = array('nickname'=>$s[0], 'old'=>$s[1], 'birth'=>$s[2],'state'=>$s[3]);//配列に入れる
}
//print_r($users);
//processing
//更新内容を取得
for($i=0; $i<$changing_num; $i++){
$r = explode(" ", str_replace(array("\r\n","\r","\n"), '', trim(fgets(STDIN))));
$target = $r[0]-1;//配列は0始まりなので
$newname = $r[1];
//echo($target.",".$newname."\n");
$users = changeName($users, $target, $newname);
}
//print_r($users);
//output answer
for($i=0; $i<$num; $i++){
outputUsers01($users[$i]);
}
//functions
function changeName($users, $target, $newname){ //名前を変更する
//print_r($users[0]);
//echo("in function ");
//echo($target.",".$newname."\n");
$users[$target]["nickname"] = $newname;
return($users);//これが必要
}
//連想配列の内容を所定の形で出力する パターン1
function outputUsers01($users){
echo($users["nickname"]." ".$users["old"]." ".$users["birth"]." ".$users["state"]."\n");
}
//連想配列の内容を所定の形で出力する パターン2
function outputUsers02($users){
echo("User{\n");
echo("nickname : ".$users["nickname"]."\n");
echo("old : ".$users["old"]."\n");
echo("birth : ".$users["birth"]."\n");
echo("state : ".$users["state"]."\n");
echo("}\n");
}
?>
changeNameに変数を送る時、$usersを最初送っていなくて反映されず、ハテナになっていました。functionのなかは別世界なので、あらためて$usersも送る必要がある。たぶん。

あぶらぼうず
paiza 問題はこちら
https://paiza.jp/works/mondai/class_primer/class_primer__change
0