[PHP-users 10942] 参照渡し引数を配列に入れて変更する方法

aiko php-users@php.gr.jp
Fri, 18 Oct 2002 11:02:23 +0000


こんにちは。
プログラムの初歩的な質問だと思うのですが…
(というかアルゴリズムの問題…)
どなたかにスマートな書き方を教えて頂きたくてメールしました。

以下のような”年月日時分秒”を得る関数を作成し、
月日時分秒が一桁だった場合は、頭に0を追加したいと考えています。
その際、
if( $mm < 10)
{
	$mm = "0". $mm
}

の様な処理を年月日時分秒すべてに書くのは要領が悪いと思い、
以下のソースのように配列に入れることにしました。


//******************************************************************
function GetDate_yymmdd( &$yyyy, &$mm, &$dd, &$h, &$m, &$s )
{
        $aDate = getdate();     // 当日日付をGET

        $yyyy = $aDate['year'];
        $mm = $aDate['mon'];
        $dd = $aDate['mday'];
        $h = $aDate['hours'];
        $m = $aDate['minutes'];
	    $s = $aDate['seconds'];

        $aAddZero = array( $mm,
                           $dd,
                           $h,
                           $m,
                           $s );

        // 一桁の場合頭に"0"をつける
        for($i=0; $i < count( $aAddZero ); $i++ )
        {
                if( $aAddZero[$i] < 10 )
                {
                        $aAddZero[$i]="0".$aAddZero[$i];
                }

        }
}
//******************************************************************

上記のソースでは
引数を参照渡しにしているため、配列の中身が変更されるだけで
実際の引数の中身は変更されません。
(まあ、当たり前なのですが…)

cでいうポインタの様な考え方を使えば、
”配列の中身が変更されたら、引数も直接変更される”
様なプログラムが書けると思うのですが…
そのようなことはphpで実現可能なのでしょうか。

まあ、ひとつひとつif文で分ければ済むことなのですが。


「私ならこういう風に書く」という意見でも良いので、どなたかご教授お願いしま
す。








_________________________________________________________________
会員登録は無料  充実した出品アイテムなら MSN オークション  
http://auction.msn.co.jp/