ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルの総合的な復習の質問

PHP_PHP チュートリアルの総合的な復習の質問

WBOY
WBOYオリジナル
2016-07-14 10:11:33793ブラウズ

1. 変数を定義するには?変数が定義されているかどうかを確認するにはどうすればよいですか?変数を削除するにはどうすればよいですか?変数が空かどうかを判定する関数?
isset()
unset()
空()

2. 可変変数とは何ですか?
変数の変数名は動的に設定して使用できます。
$a = 'hello' 、$$a = 'world'、${$a}=hello world

3. 変数の代入方法にはどのようなものがありますか?
1) 直接割り当て
2) 変数間の代入
3) 参照の割り当て

4. 引用とコピーの違いは何ですか?
コピーとは、元の変数の内容をコピーすることです。コピーされた変数と元の変数は独自のメモリを使用し、相互に干渉しません。
参照は変数のエイリアスに相当し、実際には同じ変数の内容に異なる名前でアクセスすることを意味します。 1 つの変数の値を変更すると、もう 1 つの変数の値も変更されます。


5. PHP の変数の基本的なデータ型は何ですか?
PHP は 8 つのプリミティブ データ型をサポートします。
含まれるもの:
4 つのスカラー型 (ブール、整数、浮動小数点数/倍精度、文字列)
2 つの複合タイプ (配列、オブジェクト)
2 つの特殊なタイプ (リソース、NULL)


6. 他の型がブール型に変換されるとき、どの型が false とみなされますか?
ブール値 false、整数値 0、浮動小数点値 0.0、空の文字列、文字列 '0'、空の配列、特殊なデータ型 NULL、変数セットなし。

empty() 関数はどのような状況で true を返しますか?
ブール値 false、
整数値 0,
浮動小数点値 0.0、
空の文字列、
文字列「0」、
array() 空の配列、
特殊なデータ型 NULL、
プロパティのないオブジェクト、
代入された変数はありません。


7. 変数 $a が定義されているが、初期値が割り当てられていない場合
$a==0 ということでしょうか?
$a==false?
$a==''?
$a==NULL?
$a===NULL? 答え: echo=>何もない、var_dump=>NULL
空($b)==true? ——————————— echo=>1 、var_dump=>bool(true)
このときの $a++ の出力はどうなるのでしょうか? ———————— echo=>何もなし、var_dump=>NULL
++$a の出力は何ですか? ————————— echo=>1 、var_dump=>int(1)


8. 文字列を整数に変換する方法はいくつありますか?それを達成するにはどうすればよいでしょうか?
強制型変換: (整数) 文字列変数名;
直接変換: settype (文字列変数、整数);
intval(文字列変数);

9. スカラーデータと配列の最大の違いは何ですか?
スカラーは 1 つのデータのみを保存できますが、配列は複数のデータを保存できます。


10. 定数はどのように定義されますか? 定数が定義されているかどうかを確認するにはどうすればよいですか?定数の値にはどのようなデータ型を使用できますか?
define()//定数を定義、define()//定数が定義されているか確認する
定数の値はスカラー型データのみです。


11. 定数はシステム組み込み定数とカスタム定数に分けられます。最も一般的なシステム組み込み定数の名前を教えてください。
__FILE__ 、 __LINE__ 、 PHP_OS 、 PHP_VERSION

12. 2 つの同一の定数が定義されている場合、前者と後者のどちらが機能しますか?
前者は、一度定義された定数は再定義または未定義できないため機能します。


13. 定数と変数の違いは何ですか?
1) 定数の前に $ 記号はありません。 2) 定数は、代入ステートメントではなく、define() を通じてのみ定義できます。 3) 定数はどこでも定義してアクセスできますが、変数はグローバルとローカルに分けられます。 4) 定数は一度定義すると再定義したり未定義にすることはできませんが、変数は代入によって再定義されます
5) 定数の値はスカラー データのみですが、変数のデータベース タイプには 8 つのプリミティブ データ タイプがあります。


14. PHP で一般的に使用されるいくつかの事前定義されたグローバル配列変数は何ですか?

9 つの事前定義された組み込み配列変数があります:

$_POST、$_GET、$_REQUEST、$_SESSION、$_COOKIE、$_FILES、$_SERVER、$_ENV、$GLOBALS

15. 実際の開発では、定数はどこで最もよく使用されますか?
1) データベースに接続するための情報は、ユーザー名、パスワード、データベース名、データベース サーバーのホスト名などの定数として定義されます。 2) サイトのパスの一部を定数として定義します (Web 絶対パス、Smarty インストール パス、モデル、ビュー、コントローラー フォルダー パスなど)。 3) ウェブサイト名、ウェブサイトのキーワード、その他の情報などのウェブサイトの公開情報。

16. 関数の利点は何ですか?
プログラムの保守性を向上
ソフトウェアの信頼性を向上
プログラムの再利用性を向上させる

プログラム開発効率の向上



17. 関数を定義するにはどうすればよいですか?関数名は大文字と小文字を区別しますか?
1) 関数キーワードを使用します。 2) 関数の命名規則は変数と同じで、数字ではなく文字またはアンダースコアで始まります。 3) 関数名では大文字と小文字が区別されません
4) 関数名には、システムで宣言または構築された関数名は使用できません。


18. 変数の可視性または変数のスコープとは何ですか?
プログラム内の変数のスコープです。変数の可視性に従って、変数はローカル変数とグローバル変数に分類されます。


19. ローカル変数とグローバル変数とは何ですか?グローバル変数は関数内で直接呼び出すことができますか?
ローカル変数は関数内で定義された変数であり、そのスコープは、ローカル変数が配置されている関数です。関数外にローカル変数と同名の変数がある場合、
プログラムはこれらを 2 つの完全に異なる変数であると認識します。関数を終了すると、ローカル変数も同時にクリアされます。

グローバル変数は、すべての関数の外側で定義された変数です。そのスコープは php ファイル全体ですが、ユーザー定義関数の内部では使用できません。
ユーザー定義関数内でグローバル変数を使用する必要がある場合は、global キーワード宣言を使用する必要があります。
つまり、関数内の変数の前に gobal を追加すると、関数内でグローバル変数にアクセスできるようになります
このグローバル変数を使用して操作を実行できるだけでなく、このグローバル変数を再割り当てすることもできます。
グローバル変数は、$GLOBALS['var'] を使用して呼び出すこともできます。


20. グローバルキーワードの使用方法は?事前定義されたグローバル変数配列 $GLOBALS を使用するにはどうすればよいですか?


21. 静的変数とは何ですか?
関数内で定義された変数が、その前にキーワード static を付けて宣言されている場合、その変数は静的変数です。
通常、関数呼び出しが終了すると、関数内の変数に格納されたデータがクリアされ、占有されていたメモリ空間が解放されます。静的変数を使用する場合、
この変数は、関数が初めて呼び出されたときに初期化され、関数が再度呼び出されたときに、この変数はクリアされません。 初期化されなくなりましたが、最後の関数実行後の値を保存できます。静的変数は関数のすべての呼び出し間で共有されると言えます。

22. PHP で関数にパラメータを渡すにはどのような方法がありますか?両者の違いは何ですか?
値渡しとアドレス渡し (または参照渡し)
(1) 値渡し: 渡される変数は、関数に渡される変数とは別の空間に格納されます。したがって、関数の本体では、
変数値を変更しても、元の変数値には影響しません。
(2) アドレスで渡す: & 記号を使用して、パラメータがアドレスで渡されることを示します。メインプログラム内の指定された値やターゲット変数を関数に渡しません。
代わりに、値または変数のメモリストレージブロックアドレスが関数にインポートされるため、関数本体の変数とメインプログラムの変数はメモリ内にあります
同じだ。関数本体に加えられた変更は、関数本体の外側の変数の値に直接影響します。

23. 再帰関数とは何ですか?再帰呼び出しを行うにはどうすればよいですか?
再帰関数は実際にはそれ自体を呼び出す関数ですが、次の 2 つの条件を満たす必要があります:
1) 自身を呼び出すたびに、最終結果に近づく必要があります
2) 無限ループを引き起こさない明確な再帰終了条件が必要です。
例:
実際の作業ではフォルダを横断するときによく使います。
たとえば、windows ディレクトリの下にあるすべてのファイルを取得したい場合は、まず Windows ディレクトリをたどって、その中にフォルダがあることがわかったら、自分自身を呼び出して下方向への検索を続けます。
走査されるフォルダーがなくなるまで、これはすべてのファイルが走査されたことを意味します。

24. 関数が存在するかどうかを確認しますか?
function_exists( string $function_name ) 存在する場合は true を返し、存在しない場合は false を返します。

25. func() と @func() の違いは何ですか?

2 番目の関数呼び出しは失敗してもエラーを報告しませんが、最初の関数呼び出しはエラーを報告します

26. include() 関数と require() 関数の使用法と違いは何ですか? include_once() と require_once() についてはどうですか?

includeとrequireではエラー発生後のエラーレベルが異なります
include_once() と require_once() は、ロードする前にインポートされているかどうかを判断する必要があります

27. prefix++とpost++の違いを教えてください。

Prefix ++ は、まず変数を 1 増やしてから、その値を元の変数に割り当てます。 Postfix ++ は、まず変数の現在の値を返し、次に変数の現在の値を 1 ずつ増やします。

28. 文字列演算子「.」と算術演算子「+」の違いは何ですか?

「a」と「b」の間に . が使用されている場合、それはハイフンとみなされます。 2 つの間に + がある場合、PHP はそれを操作とみなします。
1) + 記号の両側の文字列が数字で構成されている場合、文字列は自動的に整数型に変換されます。 2) + 記号の両側に純粋な文字がある場合、0 が出力されます。
3) + 記号の両側の文字列が数字で始まる場合、文字列の先頭の数字がインターセプトされて演算されます。


29. 三項演算子とは何ですか?

他の式の結果に基づいて 2 つの式のうち 1 つを選択します。

例: ($a==true) ? '良い':'悪い';


30. 制御フローステートメントとは何ですか?
1:シーケンシャル構造、分岐構造、ループ構造の3つのプログラム構造
2: 分岐: if/esle/esleif/switch/case/default
3: メモを切り替える:
case 句の定数には、整数、文字列定数、または定数式を使用できます。変数は使用できません。
同じ switch 句内で、case の値を同じにすることはできません。そうでない場合は、case の最初に出現した値のみを取得できます。
4: while do...while をループします
do...while の後にはセミコロンが必要です。
while と do の違い...while
5: ブレークとコンティニューの違い。
Break はループを終了できます。
continue は、break ほど強力ではありません。このループを終了して次のループに入ることができるだけです。


31. 配列の概念は何ですか?インデックスに基づく 2 種類の配列とは何ですか?また、それらを区別する方法は何ですか?配列に値を代入する 2 つの方法は何ですか?
配列とは、一連の値を格納できる変数(複合変数)です
インデックス配列 (インデックス値は 0 から始まる数値) と連想配列 (インデックス値として文字列を持つ)

配列に値を割り当てる 2 つの方法は何ですか?
配列を宣言するには主に 2 つの方法があります。
1. array() 関数を通じて配列を宣言します。 key=>value を使用してインデックスと値を個別に定義することも、配列のインデックス添字を定義せずに配列の要素値のみを指定することもできません。
2. array() 関数を呼び出さずに、配列要素に値を直接代入します。例:
$arr[0] = 1;
$arr[1] = 2;
特記事項:
整数に相当する文字列値 (ただし 0 で始まらない) である配列の添字は、整数として扱われます。
例: $array[3] と $array['3'] は同じ要素を参照しますが、$array['03'] は別の要素を参照します。

32. 配列を走査するにはどうすればよいですか?
①forループ
②foreach ループ。これは最も一般的に使用される走査方法です。使用法は次のとおりです: foreach($arr as $key=>$value){}
③List eachとwhileを組み合わせてループします

33. 配列を foreach するとき、ポインタはどのように指すのですか? list()/each()/while() が配列をループするとき、ポインタはどのように指すのでしょうか?
foreach の実行が開始されると、配列内のポインターは自動的に最初の要素を指します。 foreach は配列自体ではなく、指定された配列のコピーを操作するためです。
配列を each() した後、配列ポインタは配列内の次のユニットに留まるか、配列の終わりに達すると最後のユニットに留まります。 each() を使用して配列を再度スキャンしたい場合は、reset() を使用する必要があります。 reset() は、配列の内部ポインタを最初の要素に巻き戻し、最初の配列要素の値を返します。

34. 配列の長さを計算する (または配列内のすべての要素の数を数える) 方法は?文字列の長さを取得するにはどうすればよいですか?

count() -- 配列内の要素の数をカウントします。
count (配列名) または count (配列名, 1) を使用できます。2 番目のパラメーターがあり、それが数値 1 である場合、配列要素の数を再帰的にカウントすることを意味します。
2 番目のパラメーターが数値 0 の場合、パラメーターが 1 つだけある count() 関数と同等です。
sizeof() -- count() のエイリアス
文字列: strlen()、mb_strlen();

35. 配列に関連する一般的な関数は何ですか?

1) count -- (sizeof alias) - 配列内のセルの数またはオブジェクト内の属性の数をカウントします
例: int count (mixed $var [, int $mode ] ) $var は通常、配列型であり、他の型は単位を 1 つだけ持ちます。 $mode のデフォルト値は 0 です。1 は配列を再帰的にカウントすることをオンにします
2) in_array (mixed $needle , array $haystack [, bool $strict ] ) — 配列内に特定の値が存在するかどうかを確認します。
針が文字列の場合、比較では大文字と小文字が区別されます。
3 番目のパラメータ strict の値が TRUE の場合、in_array() 関数は針のタイプが干し草の山のものと同じかどうかもチェックします。
3) array_merge(array $array1 [, array $array2 [, array $... ]] ) は 1 つ以上の配列のセルをマージし、1 つの配列の値が前の配列に追加されます。結果の配列を返します。
特記事項: 入力配列に同じ文字列キー名がある場合、キー名の後の値で前の値が上書きされます。ただし、配列に数値キーが含まれている場合、後続の値は元の値を上書きせず、追加されます。
配列のみが指定され、その配列が数値的にインデックス付けされている場合、キー名は連続的に再インデックス付けされます

4) 配列と文字列間の変換

(1)explode ( string $separator , string $string [, int $limit ] ) は区切り文字を使用して文字列を区切ります。

(2)implode ( string $glue , array $arr ) は、コネクタを使用して配列内の各ユニットを文字列に接続します。
join は implode の別名です

5) sort(array &$array [, int $sort_flags]) — この関数が終了すると、配列のセルが最小値から最大値まで再配置されます。


36. 配列結合関数 array_merge() と配列加算演算 $arr + $arr2 の違いは何ですか?
array_merge() -> array_merge() を使用します。配列のキー名が同じである場合、数値インデックス配列のマージの場合は、後者の値が前者の値を上書きします。上書きされませんが、
後者は前者に追加されます。
"+"->配列の加算演算を使用します。 array_merge() とは異なり、加算演算は連想配列であっても数値インデックス配列であっても同じキー名の値を破棄します。 つまり、最初にキー名が出現する要素のみが保持され、以降同じキー名の要素は追加されません。

37. 文字列を定義するときの一重引用符と二重引用符の違いは何ですか?

38. echo()、print()、print_r()の違いは何ですか?
(1) echo は構文です。1 つ以上の文字列を出力します。戻り値はありません。 (2)print は関数であり、配列やオブジェクトを出力できません。print には戻り値があります。 (3)print_rは配列を出力できる関数です。 print_r は、string、int、float、
を出力できる興味深い関数です。 配列、オブジェクトなどは配列を出力するときに構造体で表され、出力が成功すると print_r は true を返します。print_r に print_r($str,true) を渡すと、print_r は出力せずにprint_r 処理後の値。なお、echoとprintはprintより効率が良いため、基本的にはechoを使用します。


39. 文字列処理関数を機能分類すると何ですか?これらの機能は何をするのでしょうか?

A.文字列出力関数

(1)ech​​o $a,$b,$c...; は言語構造であり、実際の関数ではありません。
(2)print($a) この関数は文字列を出力します。成功した場合は 1 を返し、失敗した場合は 0 を返します
(3)print_r($a)
(4)var_dump($a); 型、長さ、値を出力できます
B. 文字列の先頭と末尾のスペースを削除する関数:trim ltrim rtrim(別名:chop) 第 2 パラメータを使用すると、指定した文字を削除することもできます。
C. エスケープ文字列関数:addslashes()
D. 文字列の長さを取得する関数: strlen()
E. 文字列の長さをインターセプトする関数: substr()
F. 文字列関数の取得: strstr()、strpos()
G. 文字列置換関数: str_replace()


40. 次の質問に正しく答えてください。

1).$arr = array('james', 'tom', 'symfony'); $arr 配列の値を ',' で分割し、出力用の文字列にマージしてください。

echo implode(‘,’,$arr);

2).$str = ‘jack, james, tom, symfony’; $str を ‘,’ で分割し、分割した値を $arr 配列に入れてください?
$arr =explode(‘,’,$str);

3).$arr = array(3,7,2,1,’d’,’abc’); $arr を大きいものから小さいものに並べ替えて、そのキー値を変更しないでください。
arsort($arr);

print_r($arr);

4).$mail = “gaofei@163.com”; このメール (163.com) のドメインを取り出して印刷してください。最大何通り書けますか?
echo strstr($mail,'163');

echo substr($mail,7);

$arr =explode("@",$mail); echo $arr[1];

5) 文字列がある場合、その文字列は「123, 234, 345,」です。この文字列の最後のカンマを切り取るにはどうすればよいですか?

6) 乱数を取得する関数は何ですか? mt_rand() と rand() ではどちらの実行速度が速いですか?

41. ページが文字化けしてしまうのですが、どうすれば解決しますか?

1. まず、現在のファイルに文字セットが設定されているかどうかを検討します。 charsetがmetaタグに書かれているかどうかを確認する phpページであれば

であるかどうかも確認できます。 文字セットは header() 関数で指定されます;
例:

header(“content-type:text/html;charset=utf-8”);

2. 文字セット (つまり、charset) が設定されている場合は、現在のファイルに保存されているエンコード形式がページに設定されている文字セットと一致しているかどうかを確認します。 両者は統一されたままでなければなりません

3. データベースからのデータの抽出が含まれる場合は、データベースにクエリを実行するときの文字セットが現在のページの文字セット セットと一致しているかどうかを判断します。

例: mysql_query("set names utf8")。

42. 正規表現とは何ですか? PHP の正規表現に関連してよく使用される関数は何ですか?電子メール、中国の携帯電話番号、固定電話番号の正規表現を書いてください。
正規表現は、文字の配置パターンを記述するために使用される文法規則です。正規表現はパターン式とも呼ばれます。

Web サイト開発では、フォーム送信情報の前にクライアント側での検証に正規表現が最も一般的に使用されます。

たとえば、ユーザー名が正しく入力されているか、パスワードの入力が要件を満たしているか、電子メールや携帯電話番号などの情報の入力が合法であるかどうかを検証します。
PHP では、正規表現は主に文字列の分割、一致、検索、置換の操作に使用されます。

pregシリーズ関数で対応可能です。具体的には以下の通りです:

string preg_quote ( string str [, string delimiter] )
正規表現のエスケープ文字 正規表現の特殊文字は次のとおりです。
preg_replace -- 正規表現検索と置換を実行します
混合 preg_replace (混合パターン、混合置換、混合主語 [, int 制限] )
preg_replace_callback -- コールバック関数を使用して正規表現の検索と置換を実行します
混合 preg_replace_callback (混合パターン、コールバック コールバック、混合主語 [, int 制限] )
preg_split – 正規表現を使用して文字列を分割します
array preg_split (文字列パターン, 文字列件名 [, int 制限 [, int フラグ]] )

43. 文字列内のすべての HTML タグをフィルターで除外する場合は、どの関数を使用する必要がありますか?


44. preg_replace() と str_ireplace() の使用の違いは何ですか? preg_split() 関数と split() 関数の使用方法は?


45. 現在のタイムスタンプを取得するための主な関数は何ですか? PHP を使用して、今日の時刻を 2010-12-10 22:21:21 の形式で出力しますか?
PHP を使用して、前日の時刻を 2010-12-10 22:21:21 の形式で出力しますか? 2010-12-25 10:30:25 を UNIX タイムスタンプに変換するにはどうすればよいですか?

エコー日付 ("Y-m-d H:i:s" ,strtotime(‘-1,days’));

date('Y-m-d H:i:s',time());

$unix_time = strtotime("2009-9-2 10:30:25");//UNIX タイムスタンプになります
echo date("Y-m-d H:i:s",$unix_time);//通常の時刻形式にフォーマットします


46. get を使用して URL の値を渡すときに、中国語が文字化けして表示される場合、どの関数を使用して中国語をエンコードする必要がありますか?
ユーザーが Web サイトのフォームにデータを送信する場合、スクリプト攻撃 (ユーザーが <script>alert (111); </script> を入力するなど) を防ぐために、データを受信したときに PHP 側でデータをどのように処理する必要がありますか?
中国語をエンコードするには urlencode() を使用し、デコードするには urldecode() を使用します。
htmlspecialchars($_POST[‘title’]) を使用してフォームパラメーターをフィルターし、スクリプト攻撃を回避します。


47. データベースに接続する手順は何ですか?各ステップの戻り値のデータ型は何ですか?特に、mysql_query() はどのようなデータ型を返しますか?

48. mysql_fetch_row() と mysql_fetch_assoc() および mysql_fetch_array の違いは何ですか?
最初のものは結果セット内の行をインデックス配列として返し、2 つ目は連想配列を返し、3 つ目は 2 番目のパラメータに応じてインデックス配列または連想配列を返すことができます MYSQL_BOTH MYSQL_NUM MYSQL_ASSOC のデフォルトは MYSQL_BOTH
$sql =”select * from table1”;
$result = mysql_query($sql);
mysql_fetch_array($result, MYSQL_NUM);

49. これまで学習したリソースを返す関数を教えてください。
答え: mysql_connect();
mysql_query(); 選択が成功した場合のみ、失敗した場合は FALSE が返されます。 fopen();

50. ファイルを開いたり閉じたりするための関数は何ですか? ファイルの読み取りと書き込みの機能は何ですか?ファイルを削除するにはどの機能が使用されますか?

ファイルが存在するかどうかを判断するために使用される関数はどれですか?新しいディレクトリを作成するにはどの関数が使用されますか?

51. ファイルをアップロードする際に注意すべき点は何ですか?指定したディレクトリにファイルを保存するにはどうすればよいですか?重複した名前のファイルをアップロードする問題を回避するにはどうすればよいですか?
1. まず、php.ini でファイルのアップロードを有効にする必要があります。 2. php.ini にはアップロードできる最大値があり、デフォルトは 2MB です。必要に応じて変更できます
3. フォームをアップロードするときは、必ず enctype="multipart/form-data" を form タグに記述してください。 4. 提出方法は郵送です
5. type="file";
でフォームコントロールを設定します。 6. アップロードしたファイルのサイズ MAX_FILE_SIZE、ファイルの種類が要件を満たしているか、アップロード後に保存されるパスが存在するかに注意してください。

アップロードされたファイル名からファイル接尾辞を取得し、タイムスタンプとファイル接尾辞を使用してファイルの名前を変更することで、名前の重複を避けることができます。
アップロードしたファイルの保存ディレクトリを自分で設定し、ファイル名と組み合わせてファイルパスを作成することができます

ファイルを指定したディレクトリに保存します。



52. $_FILES は何次元ですか? 1 番目と 2 番目の次元のインデックス添字は何ですか?ファイルを一括アップロードする場合は何に注意すればよいですか?

二次元配列。最初の次元はアップロード コントロールの名前で、2 次元の添字は name/type/tmp_name/size/error です。



53. header() 関数の主な機能は何ですか?使用時に注意すべき点は何ですか?

答え:


54. ファイルをダウンロードするときに header() 関数を使用するにはどうすればよいですか?
回答: header("content-type: application/octet-stream;charset=UTF-8"); // ここで utf-8 を追加することと、上で定義することの違いは何ですか? 、? ?

header("accept-ranges: バイト");

header("accept-length: ".filesize($filedir.$filename));
header("content-disposition:attachment; filename=".$filedir.$filename);


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477311.html技術記事 1. 変数はどのように定義されますか?変数が定義されているかどうかを確認するにはどうすればよいですか?変数を削除するにはどうすればよいですか?変数が空かどうかを判定する関数? isset() unset() empty() 2. 可変変数とは何ですか? 一つ…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。