paiza レベルアップ問題集 クラス・構造体メニュー「構造体の更新 PHP編」解答例

<?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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です