[PHP-users 8775] Re: SQL文 MAX(CODE) で反応がない。。
Yasuo Ohgaki
php-users@php.gr.jp
Fri, 19 Jul 2002 05:03:49 +0900
大垣です。
> でも大丈夫ですね…とか思ってマニュアルを見たら、
>
> http://www.php.net/manual/en/function.pg-fetch-object.php
>
> Note: From 4.3.0, result_type is default to PGSQL_ASSOC while
> older versions' default was PGSQL_BOTH. There is no use for
> numeric property, since numeric property name is invalid in
> PHP.
>
> とか書いてありますね。numeric が invalid なのはどういう理由なのでしょ
> う。今回の例のように関数の出力を得たい場合など、わざわざ名前をつけるよ
> りカラム順でアクセスしたほうが楽だと思うんですが。
>
[yohgaki@dev PKGS]$ php
<?php
class foo {
var $1 = 'AAA';
PHP Parse error: parse error, expecting `T_VARIABLE' in - on line 4
[yohgaki@dev yohgaki]$ php
<?php
$obj->1;
PHP Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or
`'{'' or `'$'' in - on line 3
という事なので、pg_fetch_object()でPGSQL_BOTHにするのは
言語としての整合性、処理の無駄を考えてPGSQL_ASSOCに変更しま
した。
# 変数名は多くの言語と同じで数字で始められません。
[yohgaki@dev PKGS]$ php
<?php
$a[1] = 'aaa';
$obj = (object)$a;
print_r($obj);
?>
stdClass Object
(
[1] => aaa
)
PHPの場合、オブジェクトと配列は同じような物なので$obj[1]とし
てアクセスできるのですが、モジュール関数がわざと不正なプロパティー
を持つオブジェクトを作成すべきではないと考えました。
# 個人的にはpg_fetch_arrayがPGSQL_BOTHなのが非常に気に入
# らないのですが、さすがにこれをPGSQL_ASSOCに変えるのはでき
# ません。(やってしまえば良かったかな、ヒンシュク覚悟で)
--
Yasuo Ohgaki