Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

変数名の先頭に数字を使う

via. http://www.otton.org/2008/08/21/stupid-php-tricks-illegal-variable-names/

役に立たないtipsシリーズww
変数名は、

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

である必要がありますが、変数名に使えない文字を無理矢理使う方法。

<?php
$var = '1';
$$var = 'hello world';
var_dump($$var);

${'1'} = 'hello world';
var_dump(${'1'});

var_dump(compact( '1' ));

これを実行すると次のとおり。

$ php -v
PHP 5.2.6 (cli) (built: May 27 2008 16:58:19)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
    with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans
    with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
$ php test.php
string(11) "hello world"
string(11) "hello world"
array(1) {
  ["1"]=>
  string(11) "hello world"
}
$