ホームページ >バックエンド開発 >PHPチュートリアル >PHP筆記試験問題集
PHP 筆記試験問題の概要
1. リモート画像をローカルにキャプチャするにはどの関数を使用しますか?
fsockopen、A
2. 最小限のクエリを作成します。 code 3 最大値を持つ関数。
function($a,$b,$c){
* W0 z* u6 k e. La a: }5 } return $a>$b ? ($ a>$c? $a : $c) : ($b>$c? $b : $c );
5 O: F6 v1 W# U}
3. PHP で印刷する 時刻、印刷形式は May 10, 2007 22:21:21
Echo date('Y-m-d H:i:s',strtotime('-1 day')); です。
4. JavaScript は 2 次元配列を定義できますか? 定義できない場合は、どうすれば解決できますか?
JavaScript は、arr[0] = を使用できます。 new array() を使用して問題を解決します
5. a.html と b.html が同じフォルダーにあると仮定します。a.html を 5 秒間開いた後、JavaScript を使用して自動的に b.html にジャンプします。
function go2b(){
window.location = “b.html”;
window.close();
}
setTimeout( “go2b ()",5000 ); //5 秒後に go2b() を自動的に実行
6. //現在のページを閲覧しているユーザーの IP アドレス: 127.0.0.1
echo $_SERVER["REMOTE_ADDR"].”
”;
//クエリ文字列 (URL の最初の疑問符? の後の内容): id=1&bi=2
echo $_SERVER[ "QUERY_STRING"]."
";
//現在実行中のスクリプトが配置されているドキュメント ルート ディレクトリ: d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"]."
"; 🎜>7. HTTP 1.0 では、ステータス コード 401 の意味は許可されていません____; プロンプト「ファイルが見つかりません」が返された場合、ヘッダー関数を使用でき、ステートメントは header("HTTP/1.0 404 Not Found" ) です。 ;
答え: 401 は不正を意味します; header(“HTTP/1.0 404 Not Found”);
8. フォルダー内のすべてのファイルとサブフォルダーを走査できる関数を作成します。
function my_scandir($dir)
{
$files=array();
if(is_dir($dir))
{
if( $handle=opendir($dir))
{
while(($file=readdir($handle))!==false)
{
if($file!=”.” && $file!=”..”)
{
if(is_dir($dir.”/”.$file))
{
$files[$file]=my_scandir($dir. ”/”.$file);
}
else
{
$files[]=$dir.”/”.$file;
}
}
}
closedir($handle);
return $files;
}
}
}
print_r(my_scandir(“D:Program FilesInternet ExplorerMUI”));
?> ;
9. ユーザー配列に John を追加します?
$users[] = 'john');
10. PHP の error_reporting の機能は何ですか?
答え: error_reporting() は、PHP のエラー レベルを設定し、現在のレベルを返します。
11. メールの形式が正しいかどうかを確認する関数を正規表現(正規表現)を使用して記述してください。
答え:
$email=$_POST['email'];
if(!preg_match('/^[w.] @([w.] ).[a-z]{2,6}$/i',$email)) {
echo "電子メールの検出に失敗しました";
}else{
echo "電子メールの検出に成功しました";
}
?>
12. PHP を使用して、クライアント IP とサーバー IP を表示するコードを記述します
答え: クライアント IP を出力します: echo $_SERVER[' REMOTE_ADDR' ]; または: getenv('REMOTE_ADDR');
プリント サーバー IP: echo gethostbyname("www.bolaiwu.com")
13. 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);
14. PHP 開発リソース ネットワークのホームページなどの 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);
echo $contents;
方法 2:
echo file_get_contents(“http://www.phpres.com/index.html”);
15. PHP における値渡しと参照渡しの違いを説明してください。いつ値渡しするのか、いつ参照渡しするのか (2 点)
答え: 値渡し: 関数のスコープ内での値の変更は関数の外では無視されます。 >参照渡し: 関数 スコープ内の値への変更は関数の外側にも反映されます
長所と短所: 値で渡す場合、PHP は値をコピーする必要があります。特に大きな文字列やオブジェクトの場合、これはコストのかかる操作になる可能性があります。
参照渡しでは値をコピーする必要がないため、パフォーマンスの向上に非常に役立ちます。
16. 標準 URL からファイル拡張子をできるだけ効率的に抽出する関数を作成します。
例: http://www.sina.com .cn /abc/de/fg.php?id=1 php または .php を削除する必要があります
答え 1:
function getExt($url){
$arr = parse_url($url);
$file =basename($arr['path']);
$ext =explode(“.”,$file);
return $ext[1];
}
答え 2:
function getExt($url) {
$url = Basename($ url );
$pos1 = strpos($url,”.”);
$pos2 = strpos($url,”?”);
if(strstr ( $url,”?”)){
return substr($url,$pos1 1,$pos2 – $pos1 – 1);
} else {
return substr($url,$pos1);
}
}
17. 5 つ以上の方法を使用してファイルの拡張子を取得する
要件: dir/upload.image.jpg、.jpg または jpg を検索、
PHP 独自の処理関数を使用して処理する必要があります。メソッドは明らかに繰り返すことができず、次のような関数にカプセル化できます。 get_ext1($ file_name), get_ext2($file_name)
function get_ext1($file_name){
return strrchr($file_name, '.');
}
function get_ext2($file_name){
return substr($file_name, strrpos($file_name, '.'));
}
function get_ext3( $file_name) {
return array_pop(explode('.', $file_name));
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
}
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), '.')));
}
18、< ;?php
$str1 = null;
$str2 = false;
echo $str1==$str2 ? '等しい' : '等しくない';
$str3 = ”;
$str4 = 0;
echo $str3==$str4 ? '等しい' : '等しくない';
$str5 = 0;
$str6 = '0';
echo $str5===$str6 ? '等しい' : '等しくない';
?>
等しい 等しい 等しくない
19. MySQL データベースでは、フィールド タイプ varchar と char の主な違いは何ですか?
varchar は可変長であり、ストレージ スペースを節約しますが、char は固定長です。 varchar は非固定長であるため、char 型よりも検索効率が高く、最初に長さを検索してからデータを抽出する必要があり、char 固定長型よりも 1 ステップ多く、効率が低くなります
20. JavaScript を使用して Image タグを生成する 3 つの方法を記述してください (ヒント: メソッド、オブジェクト、HTML の観点から考えてください)
(1)var img = new Image();
(2) var img = document.createElementById(“画像”)
(3)img.innerHTML = “”
21, 16 XHTML と HTML の最も重要な点を 2 つ以上説明してください。 違い
(1)XHTML は文書タイプ DocType を強制的に指定する必要がありますが、HTML はその必要はありません
(2)XHTML はすべてのタグが閉じられている必要がありますHTML はよりカジュアルです
22. ソート対象のオブジェクトが次元配列であると仮定して、バブル ソートまたはクイック ソートの可能なソート アルゴリズムを作成します。
//バブルソート (配列ソート)
function bubble_sort($array)
{
$count = count($array);
if ($count for($i=0; $ifor($j=$count-1; $j>$i; $j–){
if ($array[$j] $tmp = $array[$j];
$array[$j] = $array[$j - 1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
//クイックソート( Array sorting)
function Quicksort($array) {
if (count($array) $key = $array[0];
$left_arr = array ();
$right_arr = array();
for ($i=1; $i
$left_arr[] = $array[$i];
else
$right_arr[] = $array[$i];
}
$left_arr = クイックソート( $ left_arr);
$right_arr = Quicksort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
23. 3 つ以上の MySQL データベース ストレージ エンジンの名前を書き込みます (ヒント: 大文字と小文字は区別しません)
MyISAM、InnoDB、BDB (Berkeley DB)、Merge、Memory (Heap)、Example、Federated、Archive、CSV、Blackhole、 MaxDB と 12 個以上のエンジン
24. 2 つの日付の違いを見つける (例: 2007-2-5 ~ 2007-3-6
) 方法 1 :
class Dtime
{
function get_days($date1, $date2)
{
$time1 = strtotime($date1);
$time2 = strtotime($date2);
return ($time2-$time1)/86400;
}
}
$Dtime = new Dtime;
echo $Dtime->get_days('2007-2-5', '2007- 3-6');
?>
方法 2:
$temp =explode('-', '2007-2-5');
$ time1 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);
$temp =explode('-', '2007-3-6');
$time2 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);
echo ($time2-$time1)/86400;
方法 3: echo abs(strtotime("2007-2-1")-strtotime("2007-3-1"))/60/60/24 時差を計算する
25、以下の機能を実現する関数を書いてください:
文字列「open_door」を「OpenDoor」に変換し、「make_by_id」を「MakeById」に変換します。
メソッド:
function str_explode($str){
$str_arr=explode(“_”,$str);$str_implode=implode(” “,$str_arr); ("",explode(" ",ucwords($str_implode)));
return $str_implode;
}
$strexplode=str_explode("make_by_id");print_r($strexplode);
方法 2: $str="make_by_id!";
$expStr=explode("_",$str);
for($i=0;$i
echo ucwords($expStr[$i]);
}方法 3: echo str_replace(' ',",ucwords(str_replace('_',' ','open_door')));
26. テーブル内に ID のレコードが複数あり、SQL ステートメントとビューを使用してレコードの合計数を表示します。プロシージャは個別に実装されます。
DELIMITER //
プロシージャ proc_countNum(in columnId int,out rowsNo int)
begin
select count(*) into rowsNo from member where member_id=columnId;
end
call proc_countNum(1,@no);
select @no;
メソッド: View:
create view v_countNum as select member_id,count(*) as countNum from member group by
member_id
select countNum from v_countNum where member_id=1
27. JS で Web ページの前後方向のコード (forward:history.forward();=history.go(1) ) ; 戻る:history.back
();=history.go(-1); )
28. echo count(“abc”);
答え: 1
count — 配列内のセルの数またはオブジェクト内の属性の数をカウントします
int count (mixed$var [, int $mode ] ), var が配列型でない場合、または Countable インターフェイスを実装するオブジェクトは 1 を返しますが、1 つの例外があり、var が NULL の場合、結果は 0 になります。
オブジェクトの場合、SPL がインストールされている場合、Countable インターフェイスを実装することで count() を呼び出すことができます。このインターフェイスには、count() 関数の戻り値を返すメソッド count() が 1 つだけあります。
29. 整数データを大きい順に並べる関数を書いてください。高い実行効率が求められます。実行効率を向上させる方法について説明します。 (この関数は自分で実装する必要があり、php 関数は使用できません)
function BubbleSort(&$arr)
{
$cnt=count($arr);
$flag=1;
for($i=0;$i<$cnt;$i )
{
if($flag==0)
{
return ;
}
$flag=0;
for($j=0;$j<$cnt-$i-1;$j )
{
if($arr[$ j] >$arr[$j 1])
{
$tmp=$arr[$j];
$arr[$j]=$arr[$j 1];
$arr [$j 1]=$tmp;
$flag=1;
}
}
}
}
$test=array(1,3,6,8) ,2 ,7);
BubbleSort($test);
var_dump($test);
?>
30. 高速化に使用する方法の例を教えてください。ページの読み込み速度
答え: サーバー リソースが必要なときにのみ開き、適切なタイミングでサーバー リソースを閉じ、データベースにインデックスを追加すると、ページは静的ファイル、画像、その他の大きなファイルを生成できます。別のサーバー。コード最適化ツールを使用します
31. 次のコードは何を生成しますか?
$num =10;
function multiply(){
$num = $ num *10;
}
multiply();
echo $num;
関数 multiply() がグローバル変数 (global $num や $_GLOBALS[ など) として $num を指定していないためです。 'num '])、したがって $num の値は 10 になります。
32. PHP クラスの static、public、private、protected の違いは何ですか?
static はクラス名にアクセスできます
public はグローバルを意味し、クラス内外のすべてのサブクラスがアクセスできます。
private はプライベートを意味し、このクラス内でのみ使用できます。
protected は保護されていることを意味し、のみ使用できます。このクラス、サブクラス、または親クラスでのアクセス;
33. HTTP プロトコルの GET、POST、HEAD の違いは何ですか?ページのヘッダーが要求されます。
GET: 指定されたページ情報を要求し、エンティティ本体を返します。
POST: 指定された URI に対する新しい従属エンティティとして指定されたドキュメントを受け入れるようにサーバーに要求します。
(1) HTTP はサーバーと対話するためのさまざまなメソッドを定義しています。最も基本的なメソッドは GET と POST です。実際、GET はほとんどのリクエストに適していますが、POST はサイトの更新のみに予約されています。
(2) FORM を送信するとき、Method が指定されていない場合、デフォルトは GET リクエストとなり、Form で送信されたデータは URL と ? で区切られて追加されます。英数字はそのまま送信されますが、スペースは " " 記号に変換され、その他の記号は %XX に変換されます。XX は、記号の 16 進数の ASCII (または ISO Latin-1) 値です。 GET リクエストによって送信されたデータは HTTP リクエスト プロトコル ヘッダーに配置されますが、POST によって送信されたデータはエンティティ データに配置されます。
GET によって送信されたデータは最大 1024 バイトのみですが、POST では、にはこの制限はありません。
(3) GET これは、ブラウザがサーバーにリクエストするために最も一般的に使用されるメソッドです。データの送信には POST メソッドも使用されますが、POST を使用する場合は、URI の後にデータが渡されるのではなく、独立した行として渡されます。このとき、それを示す Content_length ヘッダーも送信する必要があります。データの長さ、その後に空行が続き、その後に実際に転送されるデータが続きます。 Web フォームは通常、POST を使用して送信されます。