[PHP-users 30022] Re: プログラムの作りこみ

Takumitsu Itoh itoh @ yggdore.com
2006年 8月 11日 (金) 22:00:28 JST


 初めまして。伊藤と申します。

 発想を変えて配列から指定したキー値のデータを取り出し、無ければNULLをセット
する関数を用意すればいいのではないでしょうか?
特に配列のNoticeが結構邪魔ですが、error_repoting( E_ALL )でもでないように私
はこういった配列を取り出したり操作する汎用関数をいくつか用意して使いまわして
います。

なお、以下はその場でバーっと作ったため、エラーになるかもしれません。

function extractArray( $data, $extkeys )
{
    $rts = array();
    foreach( $extkeys as $key ){
        if( !isset( $data[$key] ) ){
            $rts[$key] = NULL;
            continue;
        }
        $rts[$key] = $data[$key];
    }

    return $rts;
}

-- 伊藤 琢晃(itoh @ yggdore.com)



> -----Original Message-----
> From: php-users-bounces @ php.gr.jp [mailto:php-users-bounces @ php.gr.jp] On
> Behalf Of nebula @ e-net.or.jp
> Sent: Saturday, August 12, 2006 12:17 PM
> To: php-users @ php.gr.jp
> Subject: [PHP-users 30016] プログラムの作りこみ
>
> 初めまして。浅倉と申します。
>
> 最近PHPをさわり始めました。
> ページから GET でデータを取得して処理するプログラムを作成しようと思い、
> その中でパラメータ指定による動作の選択をするテストプログラムを作成しま
> した。
>
> test.php
>
> if( $_GET['check'] == 'ON' ){
>   print 'オン';
> }elseif( $_GET['check'] == 'OFF' ){
>   print 'オフ';
> }else{
>   print '不正な値';
> }
>
> 上記のコードをパラメータ指定せずに実行すると
> httpのエラーログにNotice: Undefined index が2回出力されました。
>
> 原因は未定義の変数を使用したということで理解はしたのですが、
> 通常、プログラミングを行う際、 Notice メッセージさえ出ないレベルまで
> 作りこむほうがいいのでしょうか?
> 下記のように変更すると Notice が出なくはなりましたが、コードが増えただ
> けであんまり意味が無いような気がします。
>
> if( !isset($_GET['check']) ){
>   print '不正な値';
> }elseif( $_GET['check'] == 'ON' ){
>   print 'オン';
> }elseif( $_GET['check'] == 'OFF' ){
>   print 'オフ';
> }else{
>   print '不正な値';
> }
>
> 作る人のポリシー次第のような気がしますが
> 皆様はどうされておりますでしょうか?
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3



PHP-users メーリングリストの案内