これらの PHP の概念の中には、最初は理解するのが難しいものもあります。一部の人を助け、今後の困難を軽減することを願って、それらをすべてリストします。
1.変数変数
variable_variables.php
コードをコピーします コードは次のとおりです:
$a = 'hello';
$hello = 'helloEveryone';
$$a をエコーします。'
';
$b = 'ジョン';
$c = 'メアリー';
$e = 'ジョー';
$students = array('b','c','e');
echo ${$students[1]};
/*
foreach($students as $seat){
echo $$seat.'
';
}
$$var[1]
$ {$var[1]} #1
*/
$a = 'こんにちは';
変数 $a に hello を代入すると、$$a = ${hello} = $hello = 'こんにちは';
$$students[1] の場合、これは混乱を引き起こし、'[' には上位の演算子があるにもかかわらず、結果が出力されない可能性があります。
良い書き方は次のとおりです: ${$students[1]} = 'Mary';
2. 配列の関数
array_functions.php
コードをコピー コードは次のとおりです:
echo '
shift & unshift
';
$numbers = array(1,2,3, 4,5 ,6);
print_r($numbers);
echo '
';
// 配列の最初の要素をシフトします
// インデックスはリセットされます
$a = array_shift($numbers);
echo 'a: '.$a.'
';
print_r($numbers);
// 要素を配列の先頭にプッシュします
// 配列のカウントを返し、配列のインデックスをリセットします
$b = array_unshift($numbers, 'first');
echo '
b: '.$ b.'
';
print_r($numbers);
echo '
';
echo '
pop & Push
';
// 配列から最後の要素をポップします
$c = array_pop($numbers);
print_r ($numbers);
エコー '
';
// 要素を array の最後にプッシュします
$d = array_push($numbers, 'last');
echo 'd: '.$d.'
';
print_r($numbers);
その他の配列関数リファレンス
3. 日付と時刻 (時刻と日付)
UNIX 時間 (1970/1/1 から現在までの秒数) を作成するには 3 つの方法があります
time() は現在のタイムスタンプを返します
mktime ($hr, $min, $sec, $month, $day, $year); mktime(6,30,0,5,22,2012) は、2012 5/22 6:30:00 のタイムスタンプを返します
strtotime ($string); strtotime("+1 day") 明日のこの時刻のタイムスタンプを返します。 'lasy Year'
checkdate($month, $day, $year); (5,32,2012) ? 'true' : 'false'; // return false
タイムスタンプを取得した後、それを 2012/5/22 のように読み取り可能なものに変換する必要があります
date メソッドは 2 つあります。 ($format, $timestamp); strftime($format [,$timestamp])
2 番目のメソッド strftime("%Y-%m-%d %H:%M:%S ") を使用することをお勧めします。 ; // 2012-05-22 15:46:40 に戻ります
日時の参照の詳細
5. サーバー変数 (サーバーと実行環境の情報)
$_SERVER
server_variables.php
コードをコピーします コードは次のとおりです:
エコー」サーバーの詳細:< ;br />';
echo 'SERVER_NAME: '.$_SERVER['SERVER_NAME'].'
';
echo 'SERVER_ADD: '.$_SERVER['SERVER_ADDR']。 '
';
echo 'SERVER_PORT: '.$_SERVER['SERVER_PORT'].'
';
echo 'DOCUMENT_ROOT: '.$_SERVER['DOCUMENT_ROOT']'< ;br /> ;';
echo '
';
echo 'ページの詳細:
';
echo 'REMOTE_ADDR: '.$_SERVER['REMOTE_ADDR']'< ;br /> ;';
echo 'REMORT_PORT: '.$_SERVER['REMOTE_PORT'].'
';
echo 'REQUEST_URI: '.$_SERVER['REQUEST_URI'].'
' ;
echo 'QUERY_STRING: '.$_SERVER['QUERY_STRING'].'
';
echo 'REQUEST_METHOD: '.$_SERVER['REQUEST_METHOD'].'
echo 'REQUEST_TIME: '.$_SERVER['REQUEST_TIME'].'
'
echo 'HTTP_USER_AGENT: '.$_SERVER['HTTP_USER_AGENT'].'
;
エコー「
」
さらに詳しく
6.variable_scope(変数スコープ グローバル静的)
static_variables.php
コードをコピーします コードは次のとおりです:
function test()
{
$a = 0;
echo $a;
$a++;
}
test();
echo '
';
test();
echo '
';
test();
echo '
';
echo '
';
function test1()
{
static $a = 0;
echo $a;
$a++;
}
test1();
echo '
';
test1();
echo '
';
test1();
echo '
';
test() 関数の変数 $a は $a++ の結果を保存せず、test() を繰り返し呼び出しても $a の値は増加しません
test1() 関数の変数 $a は、静的変数である staic $a = 0 を宣言します。
引用: 静的変数はローカル関数スコープ内にのみ存在しますが、プログラムの実行がこのスコープを離れても値は失われません。
静的変数はローカル関数スコープ、つまり test1() 関数本体内にのみ存在できますが、プログラムが test1() スコープを離れても、静的変数はその値、つまり $a 変数を失いません1 ずつ増加します。 test1() が再度呼び出されるとき、 $a = 1;
global_variables.php
コードをコピーします コードは次のとおりです:
$a = 1;
$b = 2;
関数 Sum()
{
グローバル $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
echo '
';
$a = 1;
$b = 2;
関数 Sum1()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum1();
echo $b;
引用: PHP では、グローバル変数を関数内で使用する場合は、関数内でグローバル変数を宣言する必要があります
これらの変数を関数で使用する場合は、その関数でグローバル変数を定義する必要があります。 これにより、多くのトラブルを回避できます。
詳細
7.reference(reference)
variable_reference.php
コードをコピー コードは次のとおりです:
$a = 'arist'; = $a;
$b = 'ming';
echo "私の名前は:{$a}。でも、母は私を {$b} と呼んでいます。
"; > ;';
$a = 'アリス';
$b = &$a;
echo "私の名前は{$a}です。そして、私の母は私を{$bと呼んでいます。 } .
";
この概念は次のように理解できます。母は私のことをミンミンと呼びますが、上司は私をシャオヤンと呼びます。ミンミンでもシャオヤンでも、それは私です。
'&' そして、これは、さまざまな人が私たちのエイリアス、つまり参照をどのように呼ぶかであり、これは $a = {me、またはメモリ内の値}、$b = {リーダー、マザー、または変数} に相当します。 &, $ b は、メモリ内の $a の唯一の同一の値を指します。 したがって、上司があなたを何と呼んでも、母親があなたを何と呼んでも、あなたはあなたです。名前が違うだけです。
したがって、参照を渡した後、$b の値を変更し、$a の値も変更します。
8. 参照変数を関数に渡す (参照パラメータを関数に渡す)
コードをコピーする
コードは次のとおりです:
function ref_test(&$var){ return $var *= 2;
$a = 10;
echo $a;
関数にパラメータを渡す場合、渡されるのはコピーではありません。変数ですが、実際の値は
したがって、関数 ref_test($a) を呼び出すと、$a の値が変更されるため、最終的には $a = 20 になります。
9;関数の戻り値)
reference_function_return_value.php
コードをコピーする
コードは次のとおりです。
function &increment(){ static $var = 0; $var++; $var; }
$a =& increment(); // 2
$a++; // 4
echo "a: {$a} ";
最初に参照関数を宣言し、関数本体で、増加した値を保存できる静的変数 $var を宣言します。
$a =& increment(); このステートメントは、変数 $a 参照の戻り値です。 function increment() ,
前の参照変数と同様に、increment() 関数を変数とみなすことができます。これは $a = & $b になります
したがって、increment() と $a は両方とも同じ値を指します。 , どれかを変更すると同じ値が変更されます。
詳細
オブジェクトOOP
1.致命的なエラー: オブジェクトコンテキストにないときに $this を使用する
OOP を初めて学習するときは、よく理解していない概念があるため、この間違いは間違いなく起こりやすいです。 クラスのアクセシビリティは、海外にいる中国人がどの文化にも属しておらず、外国語を話せない(おそらく少しは話せる)と考えることもできます。外国人とコミュニケーションをとるのは、同じ国に生まれたわけではないからです。
では、エラーはどのように発生したのでしょうか?以下の例を見てください:
コードをコピーします コードは次のとおりです:
class Trones{
static public $fire = "私は火です。";
public $water = "私は水です";
静的関数 getFire( ) {
. :$fire ; // 関数を呼び出す前に必ず self を使用して静的プロパティにアクセスしてください
}
}
/*
オブジェクト内にない場合の $this の使用context
*/
//echo Trones::getFire( ) ;
//echo Trones::getWater( ) ;
// 正しい
echo Trones::Fire( );
echo "
" ;
$trones = new Trones ;
$ trones->fire ; // 注意: 未定義のプロパティ: Trones::$fire (別のエラー設定に基づく) シンプルはエラーです
echo Trones::$fire ;
この間違いは非常に古典的であり、非常に実用的です。まず静的な定義を見てみましょう。
クラスのプロパティまたはメソッドを static として宣言すると、クラスのインスタンス化を必要とせずにアクセスできるようになります。static として宣言されたプロパティには、インスタンス化されたクラス オブジェクトではアクセスできません (ただし、static メソッドではアクセスできます)。
翻訳: クラスのプロパティまたはメソッドを静的として定義すると、クラスを初期化せずに直接アクセスできるようになります。静的として定義されたプロパティには、オブジェクト演算子 * -> * を使用してクラスのオブジェクトからアクセスすることはできません (静的メソッドを通じてアクセスできます)。
説明例:
7 行目と 10 行目も同じ間違いを犯しました。最初の間違いは、オブジェクト演算子を使用して静的変数にアクセスすることでした。定義を見ると、$this はオブジェクト、つまりインスタンスに相当する疑似変数です。オブジェクト演算子 -> を使用してアクセスすると、エラーが報告されます。
同様に、静的演算子 :: を使用してパブリック変数にアクセスすることはできません。 正しいアクセスは 14 行目と 25 行目です。1 つはクラスの定義 (self:: === Trones::) 内でアクセスされ、もう 1 つはクラス外でアクセスされます。
継承クラスについても、上記のルールが適用されます。
2.致命的なエラー: プライベート メソッドの呼び出し
最近、ゲーム・オブ・スローンズという非常に興味深いテレビシリーズがあります。7 人の王、一般人、そしてドラゴンの女性の 3 つのパーティがいると仮定します。 3人は以下で最終優勝、栄冠を争った。
次のストーリーにも「クラスの可視性」というタイトルが付いています。最終的な答えがわかっている場合は、説明部分をスキップしてください。
コードをコピーします
コードは次のとおりです:
class Trones {
protected $fire = " fire ";
public $water = " Water " ;
static private $trones = "Trones";
protected function getFire( ) {
$this- >fire ;
}
static public function TheDragenOfMather( ) {
return __METHOD__." use ".$this->getFire()." は ".self::getTrones( ) ;
}
static公共のfunction getWater( ) {
return __METHOD__ ;
}
static private function getTrones( ) {
return self::$trones ;
}
}
class Kings extends Trones {
静的関数 TheSevenKing( ) {
return __METHOD__ ."は、".self::getTrones( );
}
}
class People extends Trones{
static function ThePeople( ) {
return __METHOD__."を取得します。".self::getTrones( );
}
}
echo Kings::TheSevenKing( ) ;
echo Trones::TheDragenOfMather( ) ;
echo People::ThePeople( ) ;
正确答案是:7国征战 内斗、平民死伤無数、龙女想乘机渔翁得利; 惜しむこともできない皇冠と胜利も得られません。
当静的碰到非公開,结合生复杂,也生美;就像抽象的人,像我们大学老师讲的数学课;(不过网易的公开数学课很好)
目的の女性が最後の報酬を取得した場合は、13 行の $this->getFire() を実行するだけでこの部分を削除できます。同様の処理は、静的な関数ではいかなるオブジェクト オペレーションも使用できません。
怎么使人民获得王冠呢? 你去奋斗吧!
大規模なフレームワークやウェブサイトを構築しない場合、これらの概念はインターフェイスの抽象的な実装と同様です。
http://www.bkjia.com/PHPjc/328069.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/328069.html技術記事これらの PHP の概念は、最初は非常に難しいものもありますが、私は他のすべてを列挙し、前にある経路上の点の点を減らすことができるように願っています。 1. 変数変数(変数...