PHPの面接の質問1

WBOY
リリース: 2016-06-23 14:30:18
オリジナル
890 人が閲覧しました

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

: get は HTTP プロトコルを通じてリクエストを送信し、URL パラメーターの送信を通じて受信しますが、post はエンティティ データであり、大規模なデータを送信できます。フォームを介した情報量

2. セッションと Cookie の違いは?

session: ユーザーがアクセスするグローバル一意の変数を、サーバー上の PHP によって指定されたディレクトリ (session_dir) に保存します。連続したセッションを保存する場合はクライアントに保存され、Cookie の場合はユーザーの WIN の Temp ディレクトリに保存されます。

両方とも時間の長さを設定できます

3. データベース内のトランザクションとは何ですか?

トランザクションは、単位としてのデータベース操作の順序付けされたセットです

グループ内のすべての操作が成功した場合、 1 つの操作だけが失敗した場合でも、トランザクションは成功したとはみなされません。

すべての操作が完了し、トランザクションがコミットされると、その変更は他のすべてのデータベース プロセスに影響します。操作が失敗した場合、トランザクションはロールバックされ、トランザクション内のすべての操作の効果はキャンセルされます。

1. PHP を使用して、前日の時刻形式を出力します: 2006-5-10 22:21:21

echo date('Y-m-d H:i:s', strtotime('-1 days')) ;

2 、echo()、print()、print_r() の違い

echo は PHP ステートメント、print と print_r は関数、ステートメントには戻り値がありません、そして関数は戻り値を持つことができます (役に立たない場合)

Print() は単純型変数 (int、string など) の値を出力することしかできません

Print_r() は複合型変数 (配列、オブジェクトなど) の値を出力できます

echo 1 つ以上の文字列を出力します

3. HTML と PHP を使用できる 使用するテンプレートを分離します

Smarty、Dwoo、TinyButStrong、Template Lite、Savant、phemplate、 、文字列反転を実現するにはどうすればよいですか?

echo strrev($a) ;

7. MYSQL データベースを最適化する方法

#最も適切なフィールド属性を選択し、定義されたフィールドの長さを可能な限り短くし、フィールドを NOT NULL に設定するようにしてください

例: '地方、性別'、enum に設定するのが最善です

#Use join to query:

A. 注文のない顧客を削除: CustomerInfo Where Customer から削除 b. 注文のないすべての顧客を抽出: SELECT FROM customerinfo WHERE customerid NOT in (SELECT customerid FROM) orderinfo)

c. b の速度の最適化を改善します: SELECT FROM customerinfo LEFT JOIN orderid customerinfo.customerid=orderinfo.customerid

WHERE orderinfo.customerid IS NULL

#手動で作成した一時テーブルを置き換えるにはユニオン (UNION) を使用します

a. 一時テーブルを作成します: SELECT name FROM `nametest` UNION SELECT username FROM `nametest2`

#データの整合性を確保するためのトランザクション処理

修 たとえば、追加と変更中に両方が確立され、1 つの失敗が失敗します

mysql_query ("begin"); mysql_query("SELECT * FROM `orderinfo` where customerid=".$id"); いくつかの計算を通じて初期データを取得するステートメントは、UPDATE ステートメントを使用して新しい値をテーブルに更新します。 Write キーワードを含む R w Lock Table ステートメントは、UNLO​​CK TABLES コマンドが実行される前に、Inventory

("Lock Table Customerinfo Read, orderinfo) の操作を挿入、更新、または削除するための他のアクセスがないことを保証できます。 WRITE");

mysql_query("SELECT customerid FROM `customerinfo` where id=".$id); L q mysql_query ("ロック解除テーブル");

#外部キーを使用し、ロックテーブルを最適化します

A.

              任何一条没有合法的customerid的记录不会写到orderinfo里

             CREATE TABLE customerinfo

            (

                   customerid INT NOT NULL,

                    PRIMARY KEY(customerid) 

             ) 

            TYPE = INNODB;

             CREATE TABLE orderinfo

            (

                 orderid INT NOT NULL,

                 customerid INT NOT NULL,

                 PRIMARY KEY(customerid,orderid),

                 FOREIGN KEY (customerid) REFERENCES customerinfo

                 (customerid) ON DELETE CASCADE  

           )

          TYPE = INNODB;

          注意:'ON DELETE CASCADE',该参数保证当customerinfo表中的一条记录删除的话同时也会删除order

         表中的该用户的所有记录,注意使用外键要定义事务安全类型为INNODB;

#建立索引       

        a.格式:

        (普通索引)->

        创建:CREATE INDEX <索引名> ON tablename (索引字段)

       修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)

       创表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))

        (唯一索引)->

        创建:CREATE UNIQUE <索引名> ON tablename (索引字段)

       修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)

       创表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))

      (主键)->

      它是唯一索引,一般在创建表是建立,格式为:

     CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])

#优化查询语句     

        a.最好在相同字段进行比较操作,在建立好的索引字段上尽量减少函数操作

          例子1:

                SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)

SELECT * FROM order WHERE orderDate<"2008-01-01";(快)

例子2:

SELECT * FROM order WHERE addtime/7<24;(慢)

SELECT * FROM order WHERE addtime<24*7;(快)

例子3:

SELECT * FROM order WHERE title like "%good%";

SELECT * FROM order WHERE title>="good" and name<"good";

74083cb95c4329290ce8b3de543bc141

now(),date()

10、实现中文字串截取无乱码的方法。

function GBsubstr($string, $start, $length)

{

if(strlen($string)>$length)

    {

           $str=null;

           $len=$start+$length;

          for($i=$start;$i<$len;$i++)

{

if(ord(substr($string,$i,1)>0xa0)

                 {

                      $str.=substr($string,$i,2);

                      $i++;

                }else

                {

$str ... サーバーのハードウェアが現在のトラフィックをサポートするのに十分であるかどうかを確認します

データベースの読み取りと書き込みを個別に実行し、データ テーブルを最適化します

プログラム機能のルール

外部ホットリンクの禁止

ダウンロードの制御大きなファイル

メインのトラフィックを迂回するには別のホストを使用します

13. PHP を使用して、クライアント IP とサーバー IP を表示するコードを作成します

クライアント IP を出力します: echo $_SERVER['REMOTE_ADDR'] または: getenv ('REMOTE_ADDR');

サーバー IP を出力します: echo gethostbyname(" www.bolaiwu.com ")

16、同じファイルを複数インクルードすることを避けるため、(? ) ステートメントはそれらを置き換えることができますか? プロセスに require を追加すると、条件が true かどうかに関係なく、require が最初に実行されます

include->include には戻り値がありますが、require には戻り値がありません (おそらく require が include よりも速いためです)

注: インクルードされたファイルが存在しないか、構文が間違っています。 require が致命的である場合、 include はそうではありません

17. SESSION の有効期間を変更する方法

方法 1: php.ini の session.gc_maxlifetime を 9999 に設定し、 apache を再起動します

方法 2: $savePath = " ./session_save_dir/" ;

$ Lifetime = Hive* 秒;


方法 3: setcookie () および session_set_cookie_params ($ lifetime );

18 PHP Development Resource Network のホームページのような Web ページのアドレスがあります: http://www.phpres.com/index.html、そのコンテンツを取得するにはどうすればよいですか?

方法 1 (PHP5 以降の場合)バージョン):

$readcontents = fopen("http://www.phpres.com/index.html", "rb");

方法 2:

echo file_get_contents("http://www.phpres. com/index.html");

19. HTTP 1.0 では、ステータス コード 401 の意味は (?)、「ファイルが見つかりません」というプロンプトが返された場合、ヘッダー関数を使用でき、そのステートメントはis (?) ); (2 点)

答え: ステータス 401 は、不正であることを意味します。 header("Location:www.xxx.php");

12. PHP では、ヒアドキュメントは特別な文字列です。 (1 点)

答え: ヒアドキュメントの構文は、「<<<」と独自に定義したペアのタグを使用し、タグ範囲内のテキストは文字列として扱われます

例:

$str = <<

私の名前は Jiang Qihui です!

SHOW;

13. asp、php、jsp の長所と短所について話してください (1 点)

答え: ASPすべて Named Active Server Pages は、動的で対話型の高性能 WEB サービス アプリケーションを生成および実行するために使用できる WEB サーバー側開発環境です。 ASPは独自の開発言語としてスクリプト言語VB Script(Java script

)を使用しています。

PHP は、クロスプラットフォームのサーバーサイド組み込みスクリプト言語です

から C、Java、Perl 言語から多くの構文を借用し、Web 開発者が動的に生成されたページをすばやく作成できるようにする PHP 独自の機能を組み合わせています。現在の

データベースのほとんどをサポートします。もう 1 つのポイントは、PHP は完全に無料であり、PHP 公式サイト (http://www.php.ne

t) から無料でダウンロードできます。また、ソース コードに無制限にアクセスでき、必要な機能を追加することもできます。

JSP は Sun 社が立ち上げた新世代の Web サイト開発言語で、現在の ASP と PHP の共通の問題である

スクリプトレベルの実行を完全に解決します (PHP4 もサポートされてコンパイルおよび実行されていると言われています)。 Sun Company の Java

a における彼の並外れた功績のおかげで、Java には Java アプリケーションと Java アプレットに加えて、Js

p-Java Server Page という新たな成果が生まれました。 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 を作成します: members (id、username、posts、pass、email) ( 2 点)

答え: SELECT * FROM `members` ORDER BY Posts DESC limit 0,10;

16 PHP における値渡しと参照渡しの違いを説明してください。いつ値渡しするのか、いつ参照渡しするのか (2​​ 点)

答え: 値渡し: 関数スコープ内の値への変更は関数外では無視されます

参照渡し: 値への変更はすべて無視されます。関数スコープ内では無視されます これらの変更は関数の外にも反映されます

長所と短所: 値で渡す場合、PHP は値をコピーする必要があります。特に大きな文字列やオブジェクトの場合、これはコストのかかる操作になる可能性があります。

参照渡しでは値をコピーする必要がないため、パフォーマンスの向上に非常に役立ちます。

17. PHP の error_reporting の関数とは何ですか? (1 点)

答え: エラー レベルとエラー メッセージのレポートを設定します

18. メールの形式が正しいかどうかを確認する関数を作成してください。 (2 点)

答え: function checkEmail($email)

{

$pregEmail = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@ ([ a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i" ;

Return preg_match($pregEmail,$email);

}

19. 取得したパラメータを含む、現在の実行スクリプトのパスを取得する方法を簡単に説明します。 (2点)

答え: $script_name =basename(__file__); print_r($script_name);

21. JSフォームのポップアップダイアログボックスの機能は何ですか? (2点)

答え: ポップアップダイアログボックス:alert()、prompt()、confirm()

入力フォーカスを取得する focus()

22. JSのリダイレクト機能とは何ですか?外部 JS ファイル? (2 点)

答え: window.location.href,

23. foo() と @foo() の違いは何ですか? (1 点)

答え: @foo() はエラー出力を制御します

24. メソッドと属性なしで「myclass」という名前のクラスを宣言する方法 (1) point)

答え: class myclass{ }

25. 「myclass」という名前のオブジェクトをどのようにインスタンス化しますか? (1 点)

答え: new myclass()

26.クラスの属性を設定しますか? (2 点) )

答え: $object = new myclass();

$newstr = $object->test;

$object->test = "info";

27、mysql_fetch_row() と mysql_fetch_array の違いは何ですか? (1 点)

答え: mysql_fetch_row は、結果セットから列挙型として配列の行を取り出すことです

Mysql_fetch_array は、結果セットからの配列を連想配列または数値配列として使用します。

28. GD ライブラリは何に使用されますか? (1 点)

回答: gd ライブラリは、画像を処理するための一連の API を提供します。 GD ライブラリを使用して画像を処理したり、画像を生成したりできます。

Web サイトでは、通常、GD ライブラリは、サムネイルの生成、画像への透かしの追加、または Web サイト データに関するレポートの生成に使用されます。

29. PHP に HTML コードを入力するいくつかの方法を指摘します。 (1 点)

答え: echo "aaa";

30. ファイルを読み書きできる関数は次のうちどれですか? ? (1 点)

(a) fget() (b) file_open() (c) fopen() (d) open_file() [ c ]

31. users 配列内?(1点)

(a) $users[] = 'john';

(b) array_add($users,'john');

(c) array_push($users,'john ') ;

(d) $users ||= 'john'; [ a , c ]

32. 次のプログラムは (1 点) を入力しますか?

$num = 10;

関数は乗算しますか? ) {

$num = $num * 10;

}

multiply();

Echo $num;

?>

出力: 10

33. PHP を使用して、「Zhang San」という名前のすべてのコンテンツを見つけて出力する簡単なクエリを作成します (2 点)

表name User

Name Tel Content Date

Zhang San 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. 次のクラスの使い方とその意味を説明します (3)

クラス test{

function Get_test($num){

($ num)."En");

return $num;

}

}

Answer:$testnum = "123";

$object = new test();

$encrypt = $object -> ;Get_test($testnum);

echo $encrypt;

クラス test には Get_test メソッドが含まれており、インスタンス化されたクラスは複数文字列暗号化のメソッドを呼び出します

35 SQL ステートメントの形式を記述します。 、更新、削除 (4 点)

Name User

Name Tel Content Date

Zhang San13333663366 大学卒業 2006-10-11

Zhang San13612312331 学部卒業 2006-10-15

張思 021-55665566 工業中等学校卒業生 2006-10-15

(a) 新しいレコードがあります (Xiao Wang 13254748547 高校卒業 2007-05-06) SQL ステートメントを使用してテーブル

Mysql_query("INSERT INTO `user) に追加してください。 ` (name,tel,content ,date) VALUES

('Xiao Wang','13254748547','High School Graduation','2007-05-06')")

(b) SQL ステートメントを使用してくださいZhang San の時間を現在のシステム時間に更新するには

$nowDate = date("Ymd");

mysql_query("UPDATE `user` SET date='".$nowDate."' WHERE name='Zhangshan'") ;

(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. point)

$b=201;

$c=40;

$a= $b>$c?4:5;

echo $a;

?>

答え: 4

39. 変数が設定されているかどうかを検出する関数は何ですか? ( 2 点)

答え: isset($str),empty($str);

40 . クエリ結果セットの合計数を取得する関数は何ですか? (1 点)

答え: mysql_num_rows($result);

41. '); 最初の要素の値(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 (public)、private (private)、protected (inherited)

46. php5 のコンストラクターとデストラクターを書いてください (2 点)

答え: __construct, __destruct

47 以下を完成させてください。 (1) テーブル名 message と以下のフィールド(3点)でニュースリリースシステムを作成します

id 記事id

title 記事タイトル

content 記事の内容

category_id 記事カテゴリid

ヒット数 クリック数

答え:CREATE TABLE 'message'(

'id' int(10) NOT NULL auto_increment,

'title' varchar(200) デフォルト NULL,

'content' text,

'category_id' int(10) NOT NULL、

'ヒット' int(20)、

PRIMARY KEY('id');

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

(2) 上記と同じニュースリリースシステム: テーブルのコメントはユーザーの返信内容を記録し、フィールドは次のとおりです (4 点) )

comment_id Reply id

id メッセージテーブルのIDに関連付けられた記事ID

comment_content Reply content

次に、データベースにクエリを実行して、次の形式で記事タイトルのリストを取得し、それらを並べ替える必要があります返信数、最も多い返信が一番上に表示されます

記事ID 記事タイトルのクリック数と返信数

SQLステートメントを使用して上記のクエリを完了します 記事に返信がない場合、返信数は次のように表示されます。 0

答え: SELECT message.id id,message.title title,IF(message.`hits` IS NULL ,0,message.`hits`) ヒット,

IF(comment.`id` is NULL,0, count(*))number FROM message LEFT JOIN

comment 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;

ユーザーが記事を入力するとき、ドロップダウンを選択して記事カテゴリを選択します。メニュー

このドロップダウン メニューの実装方法を書き出してください

答え: function categoryList()

{

$result=mysql_query("select category_id,categroy_name from category")

または die("無効なクエリ: " . mysql_error());

}

print("");

プログラミングの質問:

1.できるだけ効率的に

例: 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);

return substr($url,$pos1);

}

}

2. HTML 言語では、ファイルのエンコード形式を出力するために使用できます。以下は標準のメタステートメントです

標準HTMLページの同様のメタタグ内のcharset部分の値をbig5に変更する関数をPHP言語で書いてください

注意:

1.完全な処理が必要ですhtml ページ、つまりこのメタステートメントだけではありません

2. 大文字と小文字を無視します

3. ここでは ' と " は交換可能です

4. 「Content-Type」の両側の引用符は無視できますが、「text」 /html; charset=gbk ' 両側では使用できません

5. 余分なスペースの処理に注意してください

3. 2つのファイルの相対パスを計算する関数を作成します

例: $a = '/a /b/c/d/e.php' ;

$b = '/a/b/12/34/c.php';

$a に対する $b の計算された相対パスは http:/ である必要があります。 /www.cnblogs.com/c/d. ()

答え: function getRelativePath($a, $b) {

$returnPath = array(dirname($b)); を追加します。 /', $a);

$arrB =explode('/', $returnPath[0]);

for ($n = 1, $len = count($arrB); $n

if($ arra [$ n]!= $ arrb [$ n]){

$returnPath = array_merge($returnPath, array_fill(1, $len - $n, '..')) ;

return implode('/', $returnPath);

echo 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. PHP を Apache モジュールとしてインストールします。ファイル http.conf で、まずステートメント ____ を使用して PHP を動的にロードしますモジュールを作成し、ステートメント ____ を使用して、拡張子 php を持つすべてのファイルを Apache に 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。 。 tbl_user が学生の名前 (name) と学生番号 (ID) を記録する場合、tbl_score は学生 (一部の学生は試験後に退学になり、記録がありません)

とテストのスコア (score) ) と試験科目を記録します。 (件名)、各学生の名前と、対応する各件の合計スコアを出力したい場合は、SQL ステートメント ____ を使用できます。

12. PHP では、ヒアドキュメントは特別な文字列であり、その終了マークは____ でなければなりません。

プログラミングの質問:

13. フォルダー内のすべてのファイルとサブフォルダーを走査できる関数を作成します。

答え:

function my_scandir($dir)

{

$files = array();

:) file] = scandir($dir . "/" . $file);

: );

$files を返します。

答え:

/*

データテーブルの構造は次のとおりです:

CREATE TABLE `category` (

`categoryID` smallint(5) unsigned NOT NULL auto_increment,

`categoryParentID ` smallint( 5) unsigned NOT NULL デフォルト '0',

`categoryName` varchar(50) NOT NULL デフォルト '',

PRIMARY KEY (`categoryID`)

) ENGINE=MyISAM DEFAULT CHARSET=gbk;

INSERT INTO `category` ( `categoryParentID`, `categoryName`) VALUES

(0, '第 1 レベルのカテゴリ') 、

(1, '第 2 レベルのカテゴリ'),

(1, '第 2 レベルのカテゴリ'),

(1, '第 2 レベルのカテゴリ'),

(2, '第 3 レベルのカテゴリ'),

(2, '333332'),

(2, '234234'),

(3, 'aqqqqqd'),

(4, 'haha'),

(5, '66333666');

*/

//カテゴリ ID 変数 $category_id を指定し、カテゴリのすべてのサブカテゴリを返します

//$default_category はデフォルトで選択されたカテゴリです

function Get_Category($category_id = 0,$level = 0, $default_category = 0)

{

グローバル $DB;

$sql = "SELECT * FROM category ORDER BY categoryID DESC";

$result = $DB->query( $sql );

while ($rows = $DB->fetch_array($result))

{

$category_array[$rows[categoryParentID]][$rows[categoryID]] = array('id' => $rows[ categoryID ], 'parent' => $rows[categoryParentID], 'name' =>

{

return "";

}

foreach($category_array[$category_id] AS $key => $category)

{

if ($category['id'] == $default_category)

{

echo "n";

}

{

echo ">" ] . "n";

}

Get_Category( $key, $level + 1, $default_category);

}

unset($category_array[$category_id]);

}

/*

関数によって返される配列形式は次のとおりです:

Array

(

[1] => Array ( [id] => 1 [name] => レベル 1 カテゴリ[レベル] => 0 [親ID] => 0 )

[4] = > 配列 ( [id] => 4 [名前] => 二次カテゴリ [レベル] => 1 [親ID] => 1 )

[9] => 配列 ( [id] => 9 [名前] => ははは [レベル] => 2 [親 ID] => 4 )

[3 ] => 配列 ( [id] => 3 [名前] => 二次カテゴリ [レベル] => 1 [親 ID] => 1 )

[8] => > 8 [名前] => aqqqqqd [レベル] => 3 )

[2] => 二次カテゴリ[レベル] => 1 [親ID] => 1 )

[7] => 配列 ( [ID] => 7 [名前] => 234234 [レベル] => 2 [親ID] = > 2 )

[6] => 配列 ( [id] => 6 [名前] => 333332 [レベル] => 2 [親ID] => 2 )

[5] => ; 配列 ( [id] => 5 [名前] => 第 3 レベルのカテゴリ [レベル] => 2 [親 ID] => 2 )

[10] => 10 [名前] => 66333666 [レベル] => 3 [親ID] => ; 5)

)

*/

// 配列を返します

function category_array($ category_id = 0,$level=0)

{

global $DB;

$sql = "SELECT * FROM category ORDER BY categoryID DESC";

$result = $DB->query($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)

{

$options[$k] =

array(

'id' => $v['categoryID'], 'name' => $v['categoryName'], 'level' => ; $level, 'ParentID'=>$v['categoryParentID']

);

$children = category_array($k, $level+1);

if (count($children) > 0)

{

$options = $options + $children;

}

}

}

}

unset($category_array[$category_id]);

return $options ;

}

?>

class cate

{

function Get_Category($category_id = 0,$level = 0, _category = 0)

{

echo $category_id ;

$arr = array(

'0' => array(

'1' => array('id' => '親' => 0, '名前' => '1111'),

'2' => array('id' => 2, 'parent' => 0, 'name' => '2222'),

'4' => array('id' => 4, 'parent' => 0, 'name' => '4444')

),

array(

'3' => array('id' => 3, 'parent' => 1, 'name' => '333333'),

'5' => array('id' => 5, 'parent' => 1, '名前' => '555555')

)、

'3' => 配列(

'6' => 配列('id' => 6、'親' => 3、「名前」=> '66666'),

'7' => array('id' => 7, 'parent' => 3, 'name' => '77777')

),

'4' => array(

'8' => array('id' => 8, 'parent' => 4, 'name' => '8888'),

'9' => id' => 9, '親' => '9999')

);

if (!isset($arr[$category_id]))

{

return "";

}

foreach($arr[$category_id] AS $key =>カテ)

{

if ($cate['id'] == $default_category)

{

$txt = "<オプション選択値=".$cate['id']."";

}その他{

$txt = "

}

if ($level > 0)

{

$txt1 = ">" 。 str_repeat( "-", $level ) 。 「」。 $cate['名前'] 。 "n";

}else{

$txt1 = ">" 。 $cate['名前'] 。 "n";

}

$val = $txt.$txt1;

echo $val;

self::Get_Category($key, $level + 1, $default_category);

}

}

function getFlush($category_id = 0,$level = 0, $default_category = 0)

{

ob_start();

self::Get_Category( $category_id ,$level, $default_category);

$out = ob_get_contents();

ob_end_clean();

return $out;

}

}

$id =$_GET[' id'];

echo "";

?>

$contents = stream_get_contents($readcontents);

fclose($readcontents );

echo $contents;

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート