SQLの窓

2014年10月05日


PHP : 連想配列を「オブジェクト」に変換(キャスト)するとうまく動きますが、通常配列では参照できないようです

これは、連想配列云々では無く、プロパティ名が数字だと参照できないようです。( 0、a、2 という連想配列でテストしました )

PHP では、特別な文字列のプロパティ参照として、以下のような記述が可能です。
$z1->{'2011/07/08'}
$z1->{'日本語表示'}

※ ついでなので、可変変数でオブジェクトのプロパティを参照してみました
$v = '日本語表示';
print $z1->$v;
<?
header( "Content-Type: text/plain; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

// ***********************************************
// 連想配列のテスト
// ***********************************************
$x['2011/07/08'] = 2;
$x['next'] = '2011/07/15';
$x['日本語表示'] = 'ここは SHIFT_JIS です';

$z1 = (object)$x;

print "\n";
print $z1->{'2011/07/08'} . "\n";
print "{$z1->next}\n";
print "{$z1->{'日本語表示'}}\n";

// 可変変数でオブジェクトのプロパティ
$v = '日本語表示';
print $z1->$v  ."\n";

print "\n";

var_dump($z1);

// ***********************************************
// 通常配列のテスト
// ***********************************************
$y[] = 2;
$y[] = '2011/07/15';
$y[] = 'ここは SHIFT_JIS です';

$z2 = (object)$y;

// 単独では表示されません??
print "\n";
print $z2->{0} . "\n";
print $z2->{'0'} . "\n";
print $z2->{"0"} . "\n";
$v = 0;
print $z2->$v . "\n";
$v = "0";
print $z2->$v . "\n";
print "\n";


// 中には入っているようですが・・・
var_dump($z2);


// ***********************************************
// その他の変換( マニュアル通りです )
// ***********************************************
$z3 = (object)'日本語表示';

print "\n";
print $z3->scalar . "\n";
print "\n";

var_dump($z3);

?>


2
2011/07/15
ここは SHIFT_JIS です
ここは SHIFT_JIS です

object(stdClass)#1 (3) {
  ["2011/07/08"]=>
  int(2)
  ["next"]=>
  string(10) "2011/07/15"
  ["日本語表示"]=>
  string(21) "ここは SHIFT_JIS です"
}







object(stdClass)#2 (3) {
  [0]=>
  int(2)
  [1]=>
  string(10) "2011/07/15"
  [2]=>
  string(21) "ここは SHIFT_JIS です"
}

日本語表示

object(stdClass)#3 (1) {
  ["scalar"]=>
  string(10) "日本語表示"
}
全く表示されません
最後に文字列を OBJECT に変換していますが、scalar と言うプロパティが作成されています。 ちなみに、説明の吹き出しは画像ですが、中の文字は普通の文字列で、PRE の枠の position を relative にして以下のようにして表示しています。
<img src="http://winofsql.jp/image/fd02.png" style='border:solid 0 #000;width:300px;position:absolute;left:220px;top:80px;box-shadow:none' /><div style='position:absolute;left:280px;top:160px;width:200px;font-size:20px;font-weight:bold'>全く表示されません</div>



【PHP + 特記事項の最新記事】
posted by lightbox at 2014-10-05 11:44 | PHP + 特記事項 | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり