ホームページ  >  記事  >  php教程  >  php入門: php入門6日目

php入門: php入門6日目

WBOY
WBOYオリジナル
2016-06-21 08:49:26938ブラウズ

柔軟な文字列。
$ 式の柔軟性により、「マッピング」メソッドを使用して文字列や関数を呼び出すことができます。
$a = 'b';
$b = '123';
echo $$a; // これは 123 を出力します。ただし、より明確な習慣として echo ${$a} を使用することをお勧めします。
$c = 'd';
echo $c();
function d() {return '321';} // $c() は d 関数を呼び出します
?>
PHP の文字列は JavaScript や Python と似ています。二重引用符を " で囲んで記述する必要はありません。また、単一引用符を二重引用符で囲んでエスケープする必要もありません。ただし、PHP には興味深い $ があるため、double
$aa = 'abc';
echo "'$aa'";
echo "{$aa} の例を見てください。 "; // このように書く PHP5 前後で異なる結果が表示されます .1.1
echo "\{{$aa}}"; // こんなふうに書いても大丈夫です
?>
あなた変数は二重引用符で囲むことができます。「$ a」または「{$a}」を使用して表現できます。個人的には、最初のエディターでそれを強調表示し、2 番目のエディターでさらに記述することをお勧めします。複雑な数式では、「'{$a}'」の結果は「'".$a."'」の結果と同じですが、{ は '" の省略形ではないことに注意してください。 echo の結果"'{__FILE__}'" と echo "'".__FILE__."'" は異なります。ダブルクォーテーションで囲まれた範囲は、{$ xxxx } 構造になっているため (または ${xxxx} 構造ですが、これはダブルクォーテーションの外側の構造とは異なるため、あまり好きではありません)。したがって、{$this->func()} は記述できますが、{self::func()} や {constant} は記述できません。
function Demon() {return 'abc';}
function abc() {return '123';}
$func = function() {return 'function'; }; // php5.3 以降のバージョンが必要です
$abc = 'abc';
$abc1 = 'abc--one::';
echo ${demo().'1'} ;
echo ${demo('}}')}();
echo "{{${demo()}()}:::{$func()}}{$";
$test = 'Test';
echo ":::
{$test::func()}:::";
class Test
{
static public function func()
{
return 'static func';
}
}
?>
PHP の二重引用符は非常に強力ですが、多くの状況では必要ありません。ページを生成するには、次のように記述できます:
$form .= ''."n";
これは、CI フレームワークの form_helper.php の form_hidden 内のコード行です。
出力するシングルクォートが多い場合は、文字列をダブルクォーテーションで囲んでください。それ以外の場合は、単位引用符を使用します。二重引用符と比較すると、一重引用符は文字列を囲むために使用する場合にはそれほど効率的ではありませんが、一重引用符は \ と ' をエスケープするだけで済みますが、二重引用符には
Sequence Meaning
n 换行 (LF or 0x0A (10) in ASCII)
r 回车 (CR or 0x0D (13) in ASCII)
t 水平方向的 tab(HT or 0x09 (9) in ASCII)
v 竖直方向的 tab (VT or 0x0B (11) in ASCII) (since PHP 5.2.5)
f 换页 (FF or 0x0C (12) in ASCII) (since PHP 5.2.5)
\ 反斜线
$ 美金dollar标记
" 双引号
[0-7]{1,3} 符合该表达式顺序的字符串是一个八进制的字符
x[0-9A-Fa-f]{1,2} 符合该表达式顺序的字符串是一个十六进制的字符
が含まれます。   这么多要转义,但我想程序在遍历每一个字符时,实际上它最初只需要判断 \ " $ ,可能还有 {。 
那么双引号和单引号一样多时应该怎么输出呢?我们先看一下别的语言的解决方案。
Python 可以用 ''' 或者 """ 来闭合字符串,这之中并不需转义"和',有需要的话,可以写成这样  '''这样'''+"'''"。
因为php是一个模版语言,所以想直接输出的话(最好写大引用的模版文件里),直接写html就可以了。
不直接输出的话, php 用的是 heredoc语法结构和nowdoc(语法结构自PHP 5.3.0以后) 。
    Heredoc是以 <<$a = 'abc';
$b = 'html';
$c = <<'{$b}'
html;
$d = "'{$b}'
";
if ($c === $d)
{
echo <<\$c === \$d:::'{$a}' {$c}
abc

abc;
echo <<<'test'
\$c === \$d:::'{$a}' {$c}
'test'
test

test;
}
?>
   Javascript没有原生的方法,但是依靠html,还是可以解决问题。
   下面写个iframe异步提交的例子。
/* iframe_test.php */
if (isset($_POST['cmd']))
{
// 正规的写法是引用模版文件。
?>

<script><br>var a = document.getElementById("show-div").value;<br>parent.show(document.getElementById("show-div").value);<br></script>
}
?>




Welcome to CodeIgniter



js在文件后面!







Hello World



<script><br>//<![CDATA[ <br/>function show(str) {<br/>alert(str);<br/>document.getElementById("show").innerHTML = str;<br/>}<br/>//]]><br>&lt ;/script><br></html><?php /* iframe_test.php */<br/> 配列のキーとしての文字列:<br/> php には、整数と整数の 2 種類の配列キーしかありません。文字列、「0」~「9」は整数とみなされ、または整数に変換されます。以下の例を参照してください。 <br/><?php<br/>$arr_type = array(<br/>0x34 => '0x34',<br>1 => '1',<br>'1' => "'1' ",<br>1.99 => '1.99',<br>true => 'true',<br>0 => '0',<br>false => 'false',<br>' 0' => "0"、<br>0.0 => '0.0'、<br>0.01 => '0.01'、<br>.99 => '0.99'、<br>-1 => ' -1',<br>'1.99' => "''1.99'<br>'",<br>);<br>var_dump($arr_type, json_encode($arr_type), json_encode($ arr_type)); <br>if (1 !== true)<br>{<br>echo count($arr_type),'<br/>';<br>echo $arr_type[1.99],'&lt ;br/&gt ;';<br>echo $arr_type[false],'<br/>';<br>echo $arr_type['1.99'],'<br/>';<br> echo $arr_type[ -1],'<br/>';<br>echo $arr_type[0x34],'<br/>';<br>}<br>?><br> 例の配列には 5 行しかなく、これはある程度予測可能ですが、以下のエコーは false 1.99 などの非整数キーを使用しても正常に出力できます。プログラミングは厳密なものであり、多くの予期せぬ結果は望ましくありません。また、この種のエスケープは効率にある程度影響します。他の言語のこのデータ構造には、厳密モードと緩和モードがあります。たとえば、LISP にはこれら 2 つのモードがありますが、Python には厳密モード (hash={'1': 1}; print(hash[1] など) しかありません。 );# これはエラーを報告します - Python はスクリプト言語であると言われていますが、その初期設計は他のスクリプト言語よりもはるかに厳密であったため、いつか独自の言語を設計したい場合には、他のスクリプト言語よりもテスト容易性が優れています。 , まず厳密な方向で設計し、次に他の人が設定できるように ini を残します。書かれたプログラムは厳密モードから緩いモードに変更され、多くの場合、これは完全に不可能であるか、視覚的に不可能です)。しかし、PHP の配列にはこのリラックス モードしかありません。PHP5.6 には何か新しいものが出てくることを願っています。 <br> Javascript も似ていますが、キーはすべて文字列です。キーが負の数値の場合、書き込まれたコードは文字列に変換されません。 true と Flase は「true」と「flase」に変換されます。 <br><script><br>var arr = {<br>a: '47a',<br>'b': 12,<br>1: '1',<br>/* -1: ' -1'、*/<br>1.99: '1.99'、<br>'-1': '-1'、<br>false: 'false'、<br>0: '0'、<br>' 0': 'char0',<br>};<br>var i;<br>var str = '';<br>for (i in arr) {<br>str += typeof(i)+': '+i+' => '+arr[i]+'n';<br>}<br>if (1 !== true) {<br>alert([<br>arr['1'], <br>arr[1.99]、<br>arr[-1]、<br>arr['a']、<br>arr[false]、<br>arr[0]、<br>arr['0 '],<br>str,<br>]);<br>}<br></script>
Dart は、文字列をキーとしてのみ使用できますが、エスケープされません。次の例ではエラーが報告されます。個人的には、ダーツの将来性については楽観的ではありません。何かを書いているときに気まぐれにテストしてみただけです。確かに、言​​語が異なれば、さまざまな微妙な違いがあります。私がよく PHP を使うと思うと面白いのですが、JS を使うときも同じことが当然だと思っています。次の Dart コードはエラーを報告します
void main() {
print("Hello, World!");
var a = {'1': 1};
var b = { 1: 1}; // エラーの理由
print(a['1']);
print(a[1]); // エラーの理由
}
$arr = array('key' => 'val'); echo $arr[key]; このように書くと、php は最初にキーが定数であるかどうかを確認します (php には数千個のキーがあります)組み込み定数の)、定数でない場合は文字列として使用されます。したがって、この書き込み方法は非常に非効率で、$arr['key'] よりも数倍遅くなります (定数が多い項目の場合はさらに遅くなります)。 Echo "$arr[key]" は、定数を二重引用符で囲む必要がないため、echo "{$arr['key']} とほぼ同じくらい効率的です。一般に、$arr[key] は入力が少なく、より明確です。ただし、さらに 2 つ追加すると、プログラムはより環境に優しく、汎用性の高いものになります。これは難しいことではありません
PHP の定数が変数のような場合は、その前に # などの接頭辞が付きます。いずれにせよ、// は # を置き換えます。一般に、$arr[key] を記述する場合、定数を考慮する必要がないため、プログラマにとって効率的で便利です。 $arr[#key] を記述することはほとんどありません。必要に応じて $arr['#key'] を記述します。または、Erlang を学び (私はプロローグから継承した Erlang の構文が好きではなく、C または Lisp の構文に慣れています)、「変数」の名前を大文字と下線、および純粋な大文字以外でのみ指定できるようにします。と下線は「 アトミック」な名前付けに使用されます。PHP に付属する定数はすべて大文字です。私が見た PHP プロジェクトでは、定数は大文字とアンダースコアで名前が付けられています。そうでないものはほとんどないかもしれません。また、フォームの名前の値はほとんどのプロジェクトで小文字であるため、ほとんどの配列では単純な大文字とアンダースコアのみを使用できます。 5.6 にこの機能があり、ini を変更することで実装できるようになれば、ほとんどの企業の新しい PHP プロジェクトでこの機能が使用されることになるでしょう。
この記事へのリンク http://www.cxybl.com/html/wlbc/Php/20130729/39380.html



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。