ホームページ  >  記事  >  バックエンド開発  >  PHP 面接の質問 2 セット (面接に役立つ)_PHP チュートリアル

PHP 面接の質問 2 セット (面接に役立つ)_PHP チュートリアル

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

1. フォームの get 送信メソッドと post 送信メソッドの違いは何ですか?

答え: get は HTTP プロトコルを通じてリクエストを送信し、URL パラメーターを通じてそれを受信します。一方、post はエンティティ データであり、フォームを通じて大量の情報を送信できます。
2. セッションとクッキーの違いは何ですか?
答え: session: ユーザーがアクセスするグローバル一意変数を保存し、サーバー上の PHP によって指定されたディレクトリ内の (session_dir) の場所に保存されます
Cookie: ページへの連続したアクセスを保存するために使用されます。Cookie の場合は、ユーザーの WIN の Temp ディレクトリに保存されます。
どちらも時間を通じて時間の長さを設定できます
3.データベース内のトランザクションとは何ですか?
答え: トランザクションは、単位としてのデータベース操作の順序付けされたセットです。グループ内のすべての操作が成功した場合、トランザクションは成功したとみなされます。1 つの操作だけが失敗した場合でも、トランザクションは成功とは言えません。すべての操作が完了したら、
トランザクションはコミットされ、その変更は他のすべてのデータベースプロセスに影響します。操作が失敗した場合、トランザクションはロールバックされ、トランザクション内のすべての操作の効果はキャンセルされます。
簡単な説明の質問:
1. PHP を使用して、前日の時刻を 2006-5-10 22:21:21 の形式で出力します (2 点)
答え: echo date('Y-m-d H:i:s', strtotime('-1 days'));
2. echo()、print()、print_r()の違い(3点)
答え: echo は PHP ステートメントであり、print と print_r は関数です。ステートメントには戻り値がありませんが、関数は (役に立たない場合でも) 戻り値を持つことができます。
print() は単純型変数 (int、string など) の値のみを出力できます
print_r() は複合型変数 (配列、オブジェクトなど) の値を出力できます
echo 1つ以上の文字列を出力します
3. HTMLとPHPを使い分けできるテンプレート(1点)
答え:Smarty、Dwoo、TinyButStrong、Template Lite、Savant、phemplate、XTemplate
5. バージョン管理に使用されるツールは何ですか? (1 点)
答え: cvs、svn、vss;
6.文字列反転の実装方法(3つのポイント)
答え: echo strrev($a);
7. MYSQL データベースを最適化する方法。 (4 ポイント、さらに書くとさらに獲得)
答え:
1. 最も適切なフィールド属性を選択し、定義されたフィールドの長さを可能な限り短くし、フィールドを「都道府県、性別」などの NOT NULL に設定してみてください。ENUM に設定するのが最善です
2. サブクエリの代わりに接続 (JOIN) を使用します。
a. 注文なしで顧客を削除します: DELETE FROM customerinfo WHERE customerid not in (SELECT customerid FROM orderinfo)
b. 注文のないすべての顧客を抽出します: 顧客 ID が含まれていないところから顧客情報を選択します (注文情報から顧客 ID を選択します)
c. b の速度の最適化を改善します: SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid
orderinfo.customerid が NULL の場合
3. UNION を使用して手動で作成した一時テーブルを置き換えます
a. 一時テーブルを作成します: SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`
4. トランザクション処理:
a. 両方が true の場合、両方が失敗するなど、データの整合性を確保します。
mysql_query("BEGIN");
mysql_query("顧客情報 (名前) の値に挿入 ('$name1')";
mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");
mysql_query("コミット");
5. テーブルをロックし、トランザクション処理を最適化します。
a. SELECT ステートメントを使用して初期データを取得し、いくつかの計算を通じて UPDATE ステートメントを使用して新しい値をテーブルに更新します。
WRITE キーワードを含む LOCK TABLE ステートメントにより、UNLO​​CK TABLES コマンドが実行される前に UNLOCK TABLES コマンドが確実に実行されます。
在庫を挿入、更新、削除するための他のアクセス権はありません
mysql_query("ロックテーブル顧客情報読み取り、注文情報書き込み");
mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);
mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where customerid=".$id);
mysql_query("テーブルのロックを解除");
6. 外部キーを使用してロックテーブルを最適化する
a. customerinfo の customerid を orderinfo の customerid にマッピングします。
法的な顧客 ID のないレコードは orderinfo に書き込まれません
顧客情報テーブルを作成
(
顧客ID INT NOT NULL、
主キー(顧客ID)
)TYPE = INNODB;
注文情報テーブルを作成
(
orderid INT NOT NULL、
顧客ID INT NOT NULL、
主キー(顧客ID,注文ID),
外部キー (customerid) 参照 customerinfo
(顧客 ID) カスケード削除時
)TYPE = INNODB;
注: 「ON DELETE CASCADE」、このパラメータにより、customerinfo テーブルのレコードが削除されると、注文も削除されます
テーブル内のこのユーザーのすべてのレコード。外部キーを使用する場合は、トランザクション セキュリティ タイプを INNODB として定義する必要があることに注意してください。
7. インデックスを作成します:
a.フォーマット:
(通常のインデックス)->
作成: CREATE INDEX ON テーブル名 (インデックス フィールド)
変更: ALTER TABLE テーブル名 ADD INDEX [インデックス名] (インデックスフィールド)
指定したインデックスを持つテーブルを作成します: CREATE TABLE tablename([...],INDEX[インデックス名](インデックスフィールド))
(固有のインデックス)->
作成: CREATE UNIQUE ON テーブル名 (インデックス フィールド)
変更: ALTER TABLE tablename ADD UNIQUE [インデックス名] (インデックスフィールド)
指定したインデックスを持つテーブルを作成します: CREATE TABLE tablename([...],UNIQUE[インデックス名](インデックスフィールド))
(主キー)->
これは一意のインデックスであり、通常はテーブルの作成時に作成されます。形式は次のとおりです。
CREATA TABLE テーブル名 ([...],PRIMARY KEY[インデックス フィールド])
8. クエリステートメントを最適化する
a. 同じフィールドで比較演算を実行し、確立されたインデックス フィールドでの関数演算を最小限に抑えることが最善です
例 1:
SELECT * FROM order WHERE YEAR(orderDate)
SELECT * FROM order WHERE orderDate 例 2:
SELECT * FROM order WHERE addtime/7 SELECT * FROM order WHERE addtime 例 3:
SELECT * FROM order WHERE タイトル「%good%」など;
SELECT * FROM 注文 WHERE タイトル>="良い" と名前 8. PHP の意味 (1 ポイントを獲得)
回答: PHP は、動的な Web サイトを作成するためのサーバーベースのスクリプト言語です。PHP と HTML を使用して Web サイトのホームページを生成できます
9. 現在時刻を取得するMYSQLの関数と日付をフォーマットする関数は何ですか?(2点)
答え:今()、日付()
10. 中国語の文字列を文字化けせずにインターセプトする方法。 (3点)
答え: function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i,2);
$i++;
}その他{
$str.=substr($string,$i,1);
}
}
$str.'...';
を返す
}その他{
$string を返す;
}
}
11. バージョン管理ソフトウェアを使用したことがありますか? (1 点)
12. テンプレート エンジンを使用したことがありますか? (1 点)
答え: 中古、賢い
13. 最も誇りに思っている開発作業を簡単に説明してください (4 点)
答え: 情報の分類
14. トラフィックが多い Web サイトの場合、トラフィックの問題を解決するためにどのような方法を使用しますか?(4 つのポイント)
回答: サーバー ハードウェアが現在のトラフィックをサポートするのに十分であるかどうかを確認し、データベースの読み取りと書き込みを分離し、データ テーブルを最適化します。
プログラム機能ルールは、外部ホットリンクを禁止し、大きなファイルのダウンロードを制御し、メイントラフィックを迂回するために別のホストを使用することを禁止します
15. PHPを使用して、クライアントIPとサーバーIPを表示するコードを記述します(1点)
答え: 印刷クライアント IP: echo $_SERVER[‘REMOTE_ADDR’] または: getenv(‘REMOTE_ADDR’);
プリントサーバー IP:echo gethostbyname("www.bolaiwu.com")
16. include ステートメントと require ステートメントの違いは何ですか? 同じファイルを複数回インクルードすることを避けるために、(?) ステートメントを使用して置き換えることができます (2 点)。
答え: require-> require は無条件に含まれます。つまり、require がプロセスに追加されると、条件が true かどうかに関係なく、require が最初に実行されます
include->include には戻り値がありますが、require には戻り値がありません (おそらく require の方が include より速いためです)
注: インクルードされたファイルが存在しないか構文エラーがある場合、 require は致命的ですが、 include はそうではありません
17.SESSIONの生存時間(1分)を変更する方法
答え: 方法 1: php.ini の session.gc_maxlifetime を 9999 に設定し、Apache を再起動します
方法 2:$savePath = "./session_save_dir/";
$lifeTime = 時間 * 秒;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
方法 3: setcookie() と session_set_cookie_params($lifeTime);
18. PHP Development Resource Network のホームページのような Web ページのアドレスがあります: http://www.phpres.com/index.html、そのコンテンツを取得するにはどうすればよいですか ($1 ポイント)。
答え: 方法 1 (PHP5 以降):
$readcontents = fopen("http://www.phpres.com/index.html", "rb");
$contents = stream_get_contents($readcontents);
fclose($readcontents);
$contents をエコー;
方法 2:
echo file_get_contents("http://www.phpres.com/index.html");
19. HTTP 1.0 では、ステータス コード 401 の意味は (?)、プロンプト「ファイルが見つかりません」が返された場合、ヘッダー関数を使用できます。そのステートメントは (?) です。
答え: ステータス 401 は承認されていないことを意味します。header("Location:www.xxx.php");
12. PHP では、ヒアドキュメントは特殊な文字列であり、その終了マークは次のようになります。(1 点)
回答: ヒアドキュメントの構文は、「<<<」と独自に定義したペアのタグを使用し、タグ範囲内のテキストは文字列とみなされます
例:
$str = <<
私の名前は江啓輝です!
ショー;
13. asp、php、jspの長所と短所について話す(1点)
回答: ASP (Active Server Pages の正式名) は、Web サーバー側の開発環境で、生成および操作に使用できます
動的でインタラクティブな高性能 WEB サービス アプリケーションを実行します。 ASP はスクリプト言語 VB Script (Java スクリプト
) を使用します
) を独自の開発言語として使用します。
PHP は、C、Java、Perl 言語から多くの構文を借用したクロスプラットフォームのサーバーサイド組み込みスクリプト言語です。
と PHP 独自の機能を組み合わせることで、Web 開発者が動的に生成されるページを迅速に作成できるようになり、現在
の大部分がサポートされます。
データベース。もう 1 つのポイントは、PHP は完全に無料で、PHP 公式サイト (http://www.php.ne
) からダウンロードできることです。
t) 無料ダウンロード。また、ソース コードに無制限にアクセスでき、必要な機能を追加することもできます。
JSP は Sun 社が立ち上げた新世代の Web サイト開発言語で、現時点での ASP と PHP の共通の問題を完全に解決します -
スクリプトレベルの実行 (PHP4 も Zend のサポートを受けてコンパイルおよび実行されていると言われています)。
a の並外れた功績により、Java は Java アプリケーションや Java アプレット (Js) に加えて新たな成果をもたらしました
p——Java サーバー ページ。 Jsp は、Serverlet と JavaBean のサポートにより強力な Web サイトを完成させることができます
手順。
これら 3 つはすべて、HTML コードに特定のプログラム コードを混合し、言語エンジンにプログラム コードを解釈させて実行させる機能を提供します。
ただし、JSP コードはサーブレットにコンパイルされ、Java 仮想マシンによって解釈および実行されます。このコンパイル操作は JSP ページでのみ実行されます
最初のリクエストで発生します。 ASP、PHP、および JSP 環境では、HTML コードは主に情報の表示スタイルを記述します
であり、処理ロジックを記述するためにプログラム コードが使用されます。通常の HTML ページは Web サーバーのみに依存しますが、ASP と PH
P. JSP ページでは、プログラム コードを分析して実行するために追加の言語エンジンが必要です。プログラムコードの実行結果は
に再埋め込まれます
HTMLコードをまとめてブラウザに送信します。 ASP、PHP、JSP はすべて Web サーバー用のテクノロジーです
、クライアント ブラウザには追加のソフトウェア サポートは必要ありません。
14. mvc についての理解について話します (1 点)
答え: モデル、ビュー、コントローラーによって完成するアプリケーション
モデルは実装する関数をコントローラーに送信し、コントローラーは整理された関数を受け取ってビューに渡します。
15. 次の表を使用して、最も投稿数の多い 10 人の名前の SQL を作成します: メンバー (ID、ユーザー名、投稿、パス、電子メール) (2 点)
答え: SELECT * FROM `members` ORDER BY 投稿 DESC 制限 0,10;
16. PHP における値渡しと参照渡しの違いを説明してください。いつ値で渡すのか、いつ参照で渡すのか (2​​ 点)
答え: 値渡し: 関数スコープ内の値への変更は関数の外では無視されます
参照渡し: 関数のスコープ内での値の変更は、関数の外側でもこれらの変更を反映します
利点と欠点: 値で渡す場合、PHP は値をコピーする必要があります。特に大きな文字列やオブジェクトの場合、これはコストのかかる操作になる可能性があります。
参照渡しでは値をコピーする必要がないため、パフォーマンスの向上に非常に役立ちます。
17. PHP の error_reporting の機能とは何ですか? (1 点)
答え: エラーレベルとエラーメッセージレポートを設定します
18. メールの形式が正しいかどうかを検証する関数を書いてください(2点)
答え: 関数 checkEmail($email)
{
$pregEmail = "/([a-z0-9]*[-_/.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a- z0-9]+)+[/.][a-z]{2,3}([/.][a-z]{2})?/i";
preg_match($pregEmail,$email) を返す
}
19. 取得したパラメータを含む、現在の実行スクリプトのパスを取得する方法を簡単に説明します。 (2点)
答え:$script_name = ベース名(__file__);
21. JSフォームでダイアログボックスをポップアップさせる関数とは何ですか?(2点)
答え: ポップアップダイアログボックス:alert()、prompt()、confirm()
入力フォーカスを取得します focus()
22. JSのリダイレクト機能とは何ですか?(2点)
答え: window.location.href,
23. foo() と @foo() の違いは何ですか? (1 点)
答え: @foo() はエラー出力を制御します
24. メソッドと属性なしで「myclass」という名前のクラスを宣言する方法 (1 点)
答え: クラス myclass{ }
25.「myclass」という名前のオブジェクトをインスタンス化する方法 (1 点)
答え: new myclass()
26. クラスのプロパティにアクセスして設定するにはどうすればよいですか? (2 点)
答え:$object = new myclass();
$newsstr = $object->test;
$object->test = "情報";
27. mysql_fetch_row() と mysql_fetch_array の違いは何ですか? (1 点)
答え: mysql_fetch_row は結果セットから 1 行の配列を列挙型として取り出すものです
Mysql_fetch_array は、結果セットから行配列を連想配列または数値配列として取り出すものです
28. GD ライブラリは何に使用されますか? (1 点)
回答: gd ライブラリは、画像を処理するための一連の API を提供します。GD ライブラリを使用して画像を処理したり、画像を生成したりできます。
ウェブサイトでは、GD ライブラリは通常、サムネイルの生成や画像への透かしの追加、ウェブサイト データに関するレポートの生成に使用されます。
29. PHP に HTML コードを入力するいくつかの方法を指摘します。 (1点)
答え:echo "aaa";
30. ファイルを開いて読み書きできる関数はどれですか?(1 点)
(a) fget() (b) file_open() (c) fopen() (d) open_file() [ c ]
31. 次のオプションのうち、ユーザー配列に john が追加されないものはどれですか (1 点)。
(a) $users[] = ‘ジョン’;
(b) array_add($users,’john’);
(c) array_push($users,‘john’);
(d) $users ||= 'ジョン'
32. 次のプログラムが入力されますか?(1 点)
$num = 10;
関数multiply(){
$num = $num * 10;
}
乗算();
エコー $num;
?>
出力: 10
33. PHP を使用して、「Zhang San」という名前のすべてのコンテンツを検索し、出力する簡単なクエリを作成します (2 ポイント)
テーブル名 User
名前 電話番号 内容 日付
張三 13333663366 2006-10-11 大学卒業
Zhang San 13612312331 学部学位 2006-10-15
Zhang Si 021-55665566 工業中等学校卒業 2006-10-15
上記の質問に従ってコードを完成させてください:
$mysql_db=mysql_connect("local","root","pass");
@mysql_select_db("DB",$mysql_db);
$result = mysql_query("SELECT * FROM `user` WHERE name='Zhang San'");
while($rs = mysql_fetch_array($result)){
echo $rs["tel"].$rs["content"].$rs["date"];
}
34. 次のクラスの使い方とその意味を説明します。
クラステスト{
関数 Get_test($num){
$num=md5(md5($num)."En");
$num を返します;
}
}
答え:$testnum = "123";
$object = 新しいテスト();
$encrypt = $object->Get_test($testnum);
echo $encrypt;
クラス テストには、複数文字列暗号化のメソッドを呼び出すクラスをインスタンス化する Get_test メソッドが含まれています
35. SQL ステートメントの形式を記述する: 挿入、更新、削除 (4 ポイント)
テーブル名 User
名前 電話番号 内容 日付
張三 13333663366 2006-10-11大学卒業
Zhang San 13612312331 学士 2006-10-15
Zhang Si 021-55665566 工業中等学校卒業 2006-10-15
(a) 新しいレコードがあります (Xiao Wang 13254748547 高校卒業 2007-05-06) SQL ステートメントを使用してテーブルに追加してください。
mysql_query("「user」(名前、電話番号、内容、日付) の値を挿入します
('Xiao Wang','13254748547','高校卒業','2007-05-06')")
(b) SQLステートメントを使用して、Zhang Sanの時間を現在のシステム時間に更新してください
$nowDate = date("Ymd");
mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='Zhang Shan'");
(c) Zhang Siという名前のすべての記録を削除するよう書き込んでください
mysql_query("DELETE FROM `user` WHERE name='Zhang Si'");
36. データ型の意味を書いてください(int char varchar datetime text) varchar と char の違いは何ですか (2 点)。
答え: int は数値型、char 固定長文字列、varchar は実際の長さの文字列、datetime 日時型、text テキスト文字列です
charのフィールドは作成したテーブルで設定された長さに固定され、varcharは可変長文字です
38. 以下のプログラムの出力結果を書いてください(1点)
$b=201;
$c=40;
$a=$b>$c?4:5;
エコー$a;
?>
答え:4
39. 変数が設定されているかどうかを検出する関数はありますか? (2 点)
答え: isset($str),empty($str);
40. クエリ結果セットの総数を取得する関数とは何ですか(1 点)
答え: mysql_num_rows($result);
41. $arr = array('james', 'tom', 'symfony'); 最初の要素 (1 ポイント) の値を出力してください。
答え:echo $array[0];
42. 質問41の配列値を「,」記号で区切って文字列出力(1点)に結合してください。
答え: for($i=0;$i
43. $a = 'abcdef'; $a の値を取り出し、最初の文字 (1 点) を出力してください。
答え: echo $a{0} または echo substr($a,0,1)
44. PHPはSQLサーバー/oracleなどのデータベースに接続できますか? (1点)
答え: もちろんです
45. PHP5のパーミッション制御修飾子(3点)を記述してください
答え: public (パブリック)、private (私的使用)、protected (継承)
46. php5のコンストラクタとデストラクタを書いてください(2点)
答え:__construct、__destruct
47. 以下を完了します:
(1) ニュースリリースシステムを作成します。テーブル名は message で、次のフィールド (3 点) があります。
id記事id
タイトル記事タイトル
コンテンツ記事の内容
category_id 記事カテゴリID
ヒット曲
答え:CREATE TABLE 'メッセージ'(
'id' int(10) NOT NULL auto_increment,
'title' varchar(200) デフォルト NULL,
「コンテンツ」テキスト、
'category_id' int(10) NOT NULL,
'ヒット' int(20),
主キー('id');
)ENGINE=InnoDB デフォルトの文字セット=utf8;
(2) 上記と同じニュースリリースシステム: コメントテーブルはユーザーの返信内容を記録し、フィールドは次のとおりです (4 点)
comment_id 返信ID
id メッセージテーブルのIDに関連付けられた記事ID
comment_content 返信内容
次に、データベースにクエリを実行して、次の形式で記事タイトルのリストを取得し、返信数が最も多い記事を先頭に並べ替える必要があります。
記事ID 記事タイトル クリック数 返信数
SQL ステートメントを使用して上記のクエリを完了します。記事に返信がない場合、返信数は 0 と表示されます。
答え: SELECT message.id id,message.title title,IF(message.`hits` IS NULL,0,message.`hits`) ヒット数、
IF(comment.`id` が NULL,0,count(*)) 数値 FROM メッセージ LEFT JOIN
コメント ON message.id=comment.id GROUP BY message.`id`;
(3)上記コンテンツ管理システム、カテゴリテーブルは分類情報を保存しており、フィールドは以下の通りです(3点)
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
ユーザーが記事を入力するとき、ドロップダウン メニューを選択して記事カテゴリを選択します
このドロップダウン メニューの実装方法を書き留めます
答え: categoryList()関数
{
$result=mysql_query("カテゴリから category_id、categroy_name を選択")
or die("無効なクエリ: " .mysql_error());
print("");
}
プログラミングに関する質問:
1. 標準 URL からファイル拡張子をできるだけ効率的に取得する関数を作成します
例: http://www.sina.com.cn/abc/de/fg.php?id=1 php または .php を削除する必要があります
答え 1:
関数getExt($url){
$arr = parse_url($url);
$file = ベース名($arr['path']);
$ext =explode(".",$file);
$ext[1] を返す;
}
答え 2:
関数 getExt($url) {
$url = ベース名($url);
$pos1 = strpos($url,".");
$pos2 = strpos($url,"?");
if(strstr($url,"?")){
return substr($url,$pos1 + 1,$pos2 - $pos1 - 1);
} 他 {
substr($url,$pos1);を返します
}
}
2. HTML言語では、ページの先頭にあるmetaタグを使用してファイルのエンコード形式を出力できます
標準HTMLページの同様のメタタグ内のcharset部分の値をbig5に変更する関数をPHP言語で書いてください
ご注意ください:
1. このメタステートメントだけではなく、HTML ページ全体を処理する必要があります
2. 大文字と小文字を無視します
3. ' と " はここで交換可能です
4. 「Content-Type」の両側の引用符は無視できますが、「text/html」の両側の引用符は許可されません
5.余分なスペースに注意してください
3. 2 つのファイルの相対パスを計算する関数を作成します
例えば $a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
$aに対する$bの相対パスが../../c/dとなるように計算し、()を追加します
答え: function getRelativePath($a, $b) {
$returnPath = 配列(ディレクトリ名($b));
$arrA = 爆発('/', $a);
$arrB = 爆発('/', $returnPath[0]);
for ($n = 1, $len = count($arrB); $n
if ($arrA[$n] != $arrB[$n]) {
休憩
}
if ($len - $n > 0) {
$returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..'));
}
$returnPath = array_merge($returnPath, array_slice($arrA, $n));
return implode('/', $returnPath);
}
エコー getRelativePath($a, $b);
空白を埋めてください:
1. PHP では、現在のスクリプトの名前 (パスとクエリ文字列を除く) が事前定義された変数 __$_SERVER['PHP_SELF']__ に記録され、現在のページにリンクする URL が事前定義された変数 __ に記録されます。 $_SERVER['HTTP_REFERER']__
2. プログラムセグメント を実行すると、__0__ が出力されます。
3. HTTP 1.0 では、ステータス コード 401 の意味は ____ で、「ファイルが見つかりません」というプロンプトが返された場合、ヘッダー関数を使用でき、そのステートメントは ____ です。
4. 配列関数 arsort の機能は、配列を逆ソートし、インデックス関係を維持することです__、ステートメント error_reporting(2047) の機能は、__すべてのエラーと警告を報告することです__。
5.PEAR のデータベース接続文字列の形式は____です。
6. Web ページ上のすべての JS/VBS スクリプトをフィルターする (つまり、script タグとそのコンテンツを削除する) 正規表現を作成します: preg_replace("/].*?>.*) ?/si", "newinfo", $script);
7. ファイル http.conf で PHP をインストールします。まず、ステートメント ____ を使用して PHP モジュールを動的にロードし、次にステートメント ____ を使用して、Apache に php という拡張子を持つすべてのファイルを PHP スクリプトとして処理させます。と。
LoadModule php5_module "c:/php/php5apache2.dll" 、AddType application/x-httpd-php .php,
8. include ステートメントと require ステートメントは、現在のファイルに別のファイルをインクルードできます。これらの違いは、同じファイルを複数回インクルードすることを避けるために、ステートメント __require_once||include_once__ に置き換えることができます。
9. クラスの属性をシリアル化してセッションに保存できるため、後でクラス全体を復元できます。これに使用される関数は ____ です。
10. php.ini で __allow_call_time_pass_reference boolean__ が on に設定されていない限り、関数のパラメーターを変数への参照にすることはできません。
11. SQL における LEFT JOIN の意味は、__自然な左外部リンク__です。 tbl_user が学生の名前と学生 ID を記録する場合、tbl_score は学生の学生 ID を記録します (一部の学生は試験後に退学になり、その記録はありません)
テストのスコア (score) とテスト科目 (subject)、各生徒の名前と対応する各科目の合計スコアを出力したい場合は、SQL ステートメント ____ を使用できます。
12. PHP では、ヒアドキュメントは特別な文字列であり、その終了マークは____ でなければなりません。
プログラミングに関する質問:
13. フォルダー内のすべてのファイルとサブフォルダーを走査できる関数を作成します。
答え:
関数 my_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != ".." && $file != "." ) {
if ( is_dir($dir . "/" . $file) ) {
$ files [$ file] = scandir($ dir。 "/"。$ file);
}else {
$files[] = $file;
}
}
} }
Closedir($handle);
$files を返す;
}
}
14. フォーラムでの無制限分類の実装原則を簡単に説明します。
答え:
/*
データテーブルの構造は次のとおりです:
CREATE TABLE `カテゴリ` (
`categoryID` smallint(5) unsigned NOT NULL auto_increment,
`categoryParentID` smallint(5) unsigned NOT NULL デフォルト '0',
`categoryName` varchar(50) NOT NULL デフォルト '',
主キー (`カテゴリーID`)
) エンジン=MyISAM デフォルトの文字セット=gbk;
`category` (`categoryParentID`, `categoryName`) の値を挿入します
(0, '第 1 レベル カテゴリ'),
(1, '第 2 レベル カテゴリ'),
(1, '第 2 レベル カテゴリ'),
(1, '第 2 レベル カテゴリ'),
(2、「第 3 レベル カテゴリ」)、
(2, '333332'),
(2, '234234'),
(3, 'aqqqqqd'),
(4、「笑」)、
(5, '66333666');
*/
//カテゴリ ID 変数 $category_id を指定し、このカテゴリのすべてのサブカテゴリを返します
//$default_category はデフォルトで選択されたカテゴリです
関数 Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
グローバル $DB;
$sql = "SELECT * FROM カテゴリ ORDER BY categoryID DESC";
$result = $DB->query( $sql );
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows[カテゴリ親ID]][$rows[カテゴリID]] = array('id' => $rows[カテゴリID], '親' => $rows[カテゴリ親ID], '名前' => $行
[カテゴリ名]);
}
if (!isset($category_array[$category_id]))
{
"" を返す;
}
foreach($category_array[$category_id] AS $key => $category)
{
if ($category['id'] == $default_category)
{
echo "
}その他
{
echo "
}
if ($level > 0)
{
echo ">" . str_repeat( " ", $level ) . $category['name'] "/n"
}
その他
{
echo ">" . $category['name'] "/n";
}
Get_Category($key, $level + 1, $default_category);
}
unset($category_array[$category_id]);
}
/*
関数によって返される配列形式は次のとおりです:
配列
(
[1] => 配列 ( [id] => 1 [name] => 第一レベルのカテゴリ [レベル] => 0 [親 ID] => 0 )
[4] => 配列 ( [id] => 4 [name] => 二次カテゴリ [レベル] => 1 [親 ID] => 1 )
[9] => 配列 ( [id] => 9 [名前] => ハハ [レベル] => 2 [親 ID] => 4 )
[3] => 配列 ( [id] => 3 [name] => 二次カテゴリ [レベル] => 1 [親 ID] => 1 )
[8] => 配列 ( [id] => 8 [名前] => aqqqqqd [レベル] => 2 [親ID] => 3 )
[2] => 配列 ( [id] => 2 [name] => 二次カテゴリ [レベル] => 1 [親 ID] => 1 )
[7] => 配列 ( [id] => 7 [名前] => 234234 [レベル] => 2 [親ID] => 2 )
[6] => 配列 ( [id] => 6 [名前] => 333332 [レベル] => 2 [親ID] => 2 )
[5] => 配列 ( [id] => 5 [name] => 3 レベルのカテゴリ [レベル] => 2 [ParentID] => 2 )
[10] => 配列 ( [id] => 10 [名前] => 66333666 [レベル] => 3 [親ID] => 5 )
)
*/
//カテゴリIDを指定して配列を返します
関数カテゴリ配列($カテゴリ_id = 0,$レベル=0)
{
グローバル $DB;
$sql = "SELECT * FROM カテゴリ ORDER BY categoryID DESC";
$result = $DB->クエリ($sql);
while ($rows = $DB->fetch_array($result))
{
$category_array[$rows['categoryParentID']][$rows['categoryID']] = $rows;
}
foreach ($category_array AS $key=>$val)
{
if ($key == $category_id)
{
foreach ($val AS $k=> $v)
{
$オプション[$k] =
配列(
'id' => $v['categoryID'], 'name' => $v['categoryName'], 'level' => $v['categoryParentID' ]
);
$children = カテゴリ配列($k, $level+1);
if (count($children) > 0)
{
$options = $options + $children;
}
}
}
}
unset($category_array[$category_id]);
$options を返す;
}
?>
クラスメイト
{
関数 Get_Category($category_id = 0,$level = 0, $default_category = 0)
{
echo $category_id;
$arr = array(
'0' => array(
= '1' = & gt; 配列 ('ID' = & gt; 1、'ペイント' = & gt; 0、'名前' = & gt; '1111')、
= '2' = & gt; 配列 ('ID' = & gt; 2, 'ペイント' = & gt; 0, '名前' = & gt; '2222')、
️ '4' => array('id' =>
)、
'1' => array(
= '3' = & gt; 配列 ('ID' = & gt; 3, 'ペイント' = & gt; 1, '名前' = & gt; '333333')、
= '5' = & gt; 配列 ('ID' = & gt; 5, 'ペイント' = & gt; 1, '名前' = & gt; '555555')
🎜 🎜 🎜 🎜
)、
'3' =>配列(
'6' => array('id' => 6, 'parent' => 3, 'name' => '66666'),
'7' => array('id' => 7, 'parent' => 3, 'name' => '77777')
)、
'4' =>配列(
'8' => array('id' => 8, 'parent' => 4, 'name' => '8888'),
'9' => array('id' => 9, 'parent' => 4, 'name' => '9999')
)
);
if (!isset($arr[$category_id]))
{
戻り "";
}
foreach($arr[$category_id] AS $key => $cate)
{
if ($cate['id'] == $default_category)
{
$txt = "<オプション選択値=".$cate['id']."";
}その他{
$txt = "