亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 後端開發(fā) php教程 2022年最新的PHP面試題(附答案)

2022年最新的PHP面試題(附答案)

Mar 23, 2020 pm 02:31 PM
php面試題

【相關(guān)推薦:php面試題(總結(jié))】

1. 什麼是物件導(dǎo)向?主要特徵是什麼?

物件導(dǎo)向是程式的一種設(shè)計方式,它利於提高程式的重用性,使程式結(jié)構(gòu)更加清晰。主要特徵:封裝、繼承、多型。

2. SESSION 與COOKIE的區(qū)別是什麼,請從協(xié)議,產(chǎn)生的原因與作用說明?

1、http無狀態(tài)協(xié)議,不能區(qū)分用戶是否是從同一個網(wǎng)站上來的,同一個使用者請求不同的頁面不能看做是同一個使用者。

2、SESSION儲存在伺服器端,COOKIE保存在客戶端。 Session比較安全,cookie用某些手段可以修改,不安全。 Session依賴cookie進行傳遞。

停用cookie後,session無法正常使用。 Session的缺點:保存在伺服器端,每次讀取都從伺服器讀取,對伺服器有資源消耗。 Session保存在伺服器端的檔案或資料庫中,預(yù)設(shè)保存在檔案中,檔案路徑由php設(shè)定檔的session.save_path指定。 Session文件是公有的。

3. HTTP 狀態(tài)中302、403、 500程式碼意義?

一二三四五原則: 一.訊息系列二成功系列三.重定向系列四. 請求錯誤系列五. 伺服器端錯誤系列

#302:暫時轉(zhuǎn)移成功,請求的內(nèi)容已轉(zhuǎn)移到新位置403:禁止存取500:伺服器內(nèi)部錯誤401代表未授權(quán)。

4. Linux 下建立壓縮包,解壓縮包的命令

#Tar.gz:

打包: tar czf file.tar.gz file.txt

解壓縮: tar xzf file.tar.gz

Bz2:

.com: bzip2 [-k] 檔案

# 解壓縮: bunzip2 [ -k] 文件

Gzip(只對文件,不保留原始文件)

打包: gzip file1.txt

解壓縮: gunzip file1.txt.gz

Zip: -r 對目錄

打包: zip file1.zip file1.txt

解壓縮: unzip file1.zip

#5. 請寫出資料型別(int char varchar datetime text)的意思;請問varchar 和char有什麼不同?

Int 整數(shù) char 定長字元 Varchar 變長字元 Datetime 日期時間型 Text 文字型 Varchar 與char的差異 char是固定長度的字元類型,分配多少空間,就佔用多長空間。 Varchar是可變長度的字元類型,內(nèi)容有多大就佔用多大的空間,能有效節(jié)省空間。由於varchar類型是可變的,所以在資料長度改變的時,伺服器要進行額外的操作,所以效率比char類型低。

6. MyISAM 和 InnoDB 的基本差異?索引結(jié)構(gòu)如何實作?

MyISAM類型不支援事務(wù),表鎖,易產(chǎn)生碎片,要經(jīng)常優(yōu)化,讀寫速度較快,而InnoDB類型支援事務(wù),行鎖,有崩潰復(fù)原能力。讀寫速度比MyISAM慢。

建立索引:alert table tablename add index (`字段名`)

7. 不使用cookie向客戶端發(fā)送一個cookie.

#理解:session_start()開啟時,產(chǎn)生一個常數(shù)SID,當(dāng)COOKIE開啟時,這個常數(shù)為空,當(dāng)COOKIE關(guān)閉時,這個常數(shù)中儲存了PHPSESSID的值。透過在URL後面加上一個SID參數(shù)來傳遞SESSIONID的值,從而讓客戶端頁面可以使用SESSION裡面的值。當(dāng)客戶端開啟COOKIE和伺服器端開啟SESSION。瀏覽器第一次請求,伺服器會向瀏覽器端發(fā)送一個COOKIE裡面儲存SESSIONID. 當(dāng)瀏覽器第二次請求時,會把已存在

8. isset() 和empty( ) 區(qū)別

Isset判斷變數(shù)是否存在,可以傳入多個變量,若其中一個變數(shù)不存在則返回假,empty判斷變數(shù)是否為空為假,只可傳一個變量,如果為空為假則回傳真。

9. 如何在頁面之間傳遞變數(shù)(至少兩種方式) ? GET,POST,COOKIE,SESSION,隱藏表單

1. 寫出符合URL的正規(guī)表示式.

‘/^(https?|ftps?):\/\/(www)\.([^\.\/]+)\.(com|cn|org)(\/[\w-\.\/\?\%\&\=]*)?/i’

2. 請寫出常見的排序演算法,並用PHP實作冒泡排序,將陣列$a = array()依照從小到大的方式排序。

常見的排序演算法: 冒泡排序法、快速排序法、簡單選擇排序法、堆排序法、直接插入排序法、希爾排序法、合併排序法。

冒泡排序法的基本想法是:對待排序記錄關(guān)鍵字從後往前(逆序)進行多遍掃描,當(dāng)發(fā)現(xiàn)相鄰兩個關(guān)鍵字的次序與排序要求的規(guī)則不符時,就將這兩個記錄進行交換。這樣,關(guān)鍵字較小的記錄將逐漸從後面向前面移動,就像氣泡在水中向上浮一樣,所以該演算法也稱為氣泡排序法。

// 冒泡排序法
Function mysort($arr){
 For($i=0; $i<count($arr); $i++){
  For($j=0; $j<count($arr)-1-$i; $j++){
   If($arr[$j] > $arr[$j+1]){
    $tmp=$arr[$j];
    $arr[$j]=$arr[$j+1];
    $arr[$j+1]=$tmp;
            }
        }
    }
 Return $arr;
}
$arr=array(3,2,1);
print_r(mysort($arr));

3. 請說明 PHP 中傳值與傳引用的差異。什麼時候傳值什麼時候傳引用?

按值傳遞:函數(shù)範(fàn)圍內(nèi)對值的任何改變在函數(shù)外部都會被忽略

按引用傳遞:函數(shù)範(fàn)圍內(nèi)對值的任何改變在函數(shù)外部也能反映出這些修改

優(yōu)缺點:按值傳遞時,php必須復(fù)制值。特別是對于大型的字符串和對象來說,這將會是一個代價很大的操作。按引用傳遞則不需要復(fù)制值,對于性能提高很有好處。

在PHP中error_reporting這個函數(shù)有什么作用?

設(shè)置 PHP 的報錯級別并返回當(dāng)前級別。

請用正則表達(dá)式(Regular Expression)寫一個函數(shù)驗證電子郵件的格式是否正確。

if(isset($_POST[&#39;action&#39;]) && $_POST[&#39;action&#39;]==’submitted’){
 $email=$_POST[&#39;email&#39;];
 if(!preg_match(“/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+){1,3}$/”,$email)){
  echo “電子郵件檢測失敗”;
 }else{
  echo “電子郵件檢測成功”;
 }
}

使用PHP描述快速排序算法,對象可以是一個數(shù)組?

原理:快速排序使用分治策略來把待排序數(shù)據(jù)序列分為兩個子序列,具體步驟為:

(1)從數(shù)列中挑出一個元素,稱該元素為“基準(zhǔn)”。

(2)掃描一遍數(shù)列,將所有比“基準(zhǔn)”小的元素排在基準(zhǔn)前面,所有比“基準(zhǔn)”大的元素排在基準(zhǔn)后面。

(3)通過遞歸,將各子序列劃分為更小的序列,直到把小于基準(zhǔn)值元素的子數(shù)列和大于基準(zhǔn)值元素的子數(shù)列排序。

//快速排序(數(shù)組排序)
function QuickSort($arr){
 $num = count($arr);
 $l=$r=0;
 for($i=1;$i<$num;$i++){
  if($arr[$i] < $arr[0]){
   $left[] = $arr[$i];
   $l++;
  }else{
   $right[] = $arr[$i];
   $r++;
  }
 }
 if($l > 1){
  $left = QuickSort($left);
 }
 $new_arr = $left;
 $new_arr[] = $arr[0];
 if($r > 1){
  $right = QuickSort($right);
 }
 for($i=0;$i<$r;$i++){
  $new_arr[] = $right[$i];
 }
 return $new_arr;
}

使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對象可以是一個有序數(shù)組

//二分查找(數(shù)組里查找某個元素)
function bin_sch($array, $low, $high, $k){
 if ($low <= $high){
  $mid = intval(($low+$high)/2);
  if ($array[$mid] == $k){
   return $mid;
  }elseif ($k < $array[$mid]){
   return bin_sch($array, $low, $mid-1, $k);
  }else{
   return bin_sch($array, $mid+1, $high, $k);
  }
 }
 return -1;
}
//順序查找(數(shù)組里查找某個元素)
function seq_sch($array, $n, $k){
 $array[$n] = $k;
 for($i=0; $i<$n; $i++){
  if($array[$i]==$k){
   break;
  }
 }
 if ($i<$n){
  return $i;
 }else{
  return -1;
 }
}

寫一個二維數(shù)組排序算法函數(shù),能夠具有通用性,可以調(diào)用php內(nèi)置函數(shù)(array_multisort())

//二維數(shù)組排序, $arr是數(shù)據(jù),$keys是排序的健值,$order是排序規(guī)則,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
 if (!is_array($arr)) {
  return false;
 }
 $keysvalue = array();
 foreach($arr as $key => $val) {
  $keysvalue[$key] = $val[$keys];
 }
 if($order == 0){
  asort($keysvalue);
 }else {
  arsort($keysvalue);
 }
 reset($keysvalue);
 foreach($keysvalue as $key => $vals) {
  $keysort[$key] = $key;
 }
 $new_array = array();
 foreach($keysort as $key => $val) {
  $new_array[$key] = $arr[$val];
 }
 return $new_array;
}

請以空格作為間隔,拆分字符串’Apple Orange Banana Strawberry’,組成數(shù)組$fruit,

* 數(shù)組中所有元素都用小寫字母,并按照字母先后次序排序

class sort { 
 private $str; 
 public function __construct($str) { 
  $this->str=strtolower($str); 
 } 
 private function explodes() { 
  if(empty($this->str)) return array(); 
  $arr=explode(" ",$this->str); 
  return is_array($arr)?$arr:array($arr); 
 } 
 public function sort() { 
  $explode=$this->explodes(); 
  sort($explode); 
  return $explode; 
 } 
} 
$str=&#39;Apple Orange Banana Strawberry&#39;; 
$sortob=new sort($str); 
var_dump($sortob->sort());

對于用戶輸入一串字符串$string,要求$string中只能包含大于0的數(shù)字和英文逗號,請用正則 表達(dá)式驗證,對于不符合要求的$string返回出錯信息

class regx { 
 public static function check($str) { 
 if(preg_match("/^([1-9,])+$/",$str)) { 
  return true; 
 } 
 return false; 
 } 
} 
$str="12345,6"; 
if(regx::check($str)) { 
echo "suc"; 
} else { 
echo "fail"; 
}

請寫一段程序,在服務(wù)器創(chuàng)建一個文件fruit.dat,將試題3中得到的數(shù)組寫入到改文件中,然后寫一段程序從文件中讀取并還原數(shù)組@author zhuwenqiong

class sort { 
 private $str; 
 public function __construct($str) { 
  $this->str=strtolower($str); 
 } 
 private function explodes(){ 
  if(empty($this->str)) return array(); 
  $arr=explode(" ",$this->str); 
  return is_array($arr)?$arr:array($arr); 
 } 
 public function sort() { 
  $explode=$this->explodes(); 
  sort($explode); 
  return $explode; 
 } 
} 
class file { 
 private $sort=null; 
 private $filepath; 
 public function __construct($arrobj,$path) { 
  $this->sort=$arrobj; 
  $this->filepath=$path; 
 } 
 private function getresource($filename,$mode) { 
  return fopen($this->filepath.$filename,$mode); 
 } 
 private function closeresource($resource) { 
  fclose($resource); 
 } 
 public function savefile($filename) { 
  $arr=$this->sort->sort(); 
  $fopen=$this->getresource($filename,"a+"); 
  if(!$fopen){ 
   echo "文件打開失?。?quot;;
   exit; 
  } 
  var_dump($arr); 
  foreach($arr as $key=>$value) { 
   fwrite($fopen,$value."\n"); 
  } 
  $this->closeresource($fopen); 
 } 
 public function readfile($filename) { 
  $this->savefile($filename); 
  $fopen=$this->getresource($filename,"r"); 
  if(!$fopen){ 
   echo "文件打開失?。?quot;;exit; 
  } 
  $arr=array(); 
  while(!feof($fopen)) { 
   $get=fgets($fopen); 
   if(!empty($get)) 
    $arr[]=str_replace("\n","",$get); 
  } 
  $this->closeresource($fopen); 
 return $arr; 
 } 
} 
$file=new file(new sort(&#39;Apple Orange Banana Strawberry&#39;),"E:\\"); 
$arr=$file->readfile("fruit.dat"); 
var_dump($arr);

單例模式,創(chuàng)建mysqli數(shù)據(jù)庫鏈接的單例對象

class Db { 
 private static $instance; 
 public $handle; 
 Private function __construct($host,$username,$password,$dbname) { 
  $this->handle=NULL; 
  $this->getcon($host,$username,$password,$dbname); 
 } 
 public static function getBb() { 
  self::$instance=new Db(); 
  return self::$instance; 
 } 
 private function getcon($host,$username,$password,$dbname) { 
  if($this->handle!=NULL){ 
   return true; 
  } 
  $this->handle=mysqli_connect($host,$username,$password,$dbname); 
 } 
}

windows平臺, Apache Http Server啟動失敗, 排錯思路是什么?

檢查apache使用的80端口是否被占用,如果被占用,先停止占用80端口的服務(wù),然后啟動apache服務(wù)器

PHP session擴展默認(rèn)將session數(shù)據(jù)儲存在哪里? D

A) SQLite Database
B) MySQL Database
C) Shared Memory
D) File System
E) Session Server

如果你想要自動加載類,下面哪種函數(shù)聲明是正確的 C

A) function autoload($class_name)
B) function __autoload($class_name, $file)
C) function __autoload($class_name)
D) function _autoload($class_name)
E) function autoload($class_name, $file)

PHP程序使用utf-8編碼, 以下程序輸出結(jié)果是什么? B

<?php
$str = ’hello你好世界’;
echo strlen($str);
?>
A) 9
B) 13(gbk) 
C) 18 
D) 17(utf8)

你所知道的php數(shù)組相關(guān)的函數(shù)?

array()----創(chuàng)建數(shù)組
array_combine()----通過合并兩個數(shù)組來創(chuàng)建一個新數(shù)組
range()----創(chuàng)建并返回一個包含指定范圍的元素的數(shù)組
compact()----建立一個數(shù)組
array_chunk()----將一個數(shù)組分割成多個
array_merge()----把兩個或多個數(shù)組合并成一個數(shù)組
array_slice()----在數(shù)組中根據(jù)條件取出一段值
array_diff()----返回兩個數(shù)組的差集數(shù)組
array_intersect()----計算數(shù)組的交集
array_search()----在數(shù)組中搜索給定的值
array_splice()----移除數(shù)組的一部分且替代它
array_key_exists()----判斷某個數(shù)組中是否存在指定的key
shuffle()----把數(shù)組中的元素按隨機順序重新排列
array_flip()----交換數(shù)組中的鍵和值
array_reverse()----將原數(shù)組中的元素順序翻轉(zhuǎn),創(chuàng)建新的數(shù)組并返回
array_unique()----移除數(shù)組中重復(fù)的值

php讀取文件內(nèi)容的幾種方法和函數(shù)?

打開文件,然后讀取。Fopen() fread()

打開讀取一次完成 file_get_contents()

以下程序,變量str什么值的情況下輸入111?

if( ! $str ) { echo 111; }

在$str值為:0,’0′,false,null,”"

你所知道的PHP的一些技術(shù)(smarty等)?

Smarty,jquery,ajax,memcache,div+css,js,mysqli,pdo,svn,thinkphp,brophp,yii

你所熟悉的PHP論壇系統(tǒng) 有哪些?

Discuz

你所熟悉的PHP商城系統(tǒng) 有哪些?

Ecshop

你所熟悉的PHP開發(fā)框架 有哪些?

Brophp,thinkphp

說說你對緩存技術(shù)的了解?

1、緩存技術(shù)是將動態(tài)內(nèi)容緩存到文件中,在一定時間內(nèi)訪問動態(tài)頁面直接調(diào)用緩存文件,而不必重新訪問數(shù)據(jù)庫。

2、使用memcache可以做緩存。

你所知道的設(shè)計模式有哪些?

工廠模式、策略模式、單元素模式、觀察者模式、命令鏈模式

說說你對代碼管理的了解? 常使用那些代碼版本控制軟件?

通常一個項目是由一個團隊去開發(fā),每個人將自己寫好的代碼提交到版本服務(wù)器,由項目負(fù)責(zé)人按照版本進行管理,方便版本的控制,提高開發(fā)效率,保證需要時可以回到舊版本。

常用的版本控制器:SVN

說說你對SVN的了解?優(yōu)缺點?

SVN是一種版本控制器,程序員開發(fā)的代碼遞交到版本服務(wù)器進行集中管理。

SVN的優(yōu)點:代碼進行集中管理,版本控制容易,操作比較簡單,權(quán)限控制方便。

缺點:不能隨意修改服務(wù)器項目文件夾。

怎么找到PHP.ini的路徑?

一般都在php的安裝目錄下,或者window系統(tǒng)的windows目錄下。

PHP加速模式/擴展? PHP調(diào)試模式/工具?

Zend Optimizer加速擴展

調(diào)試工具:xdebug

你常用到的mysql命令?

Show databases
Show tables
Insert into 表名() values()
Update 表名 set 字段=值 where ...
Delete from 表名 where ...
Select * from 表名 where 條件 order by ... Desc/asc limit ... Group by ... Having ...

進入mysql管理命令行的命令?

Mysql -uroot -p 回車 密碼

show databases; 這個命令的作用?

顯示當(dāng)前mysql服務(wù)器中有哪些數(shù)據(jù)庫

show create database mysql; 這個命令的作用?

顯示創(chuàng)建數(shù)據(jù)庫的sql語句

show create table user; 這個命令的作用?

顯示創(chuàng)建表的sql語句

desc user; 這個命令的作用?

查詢user表的結(jié)構(gòu)

explain select * from user; 這個命令的作用?

獲取select相關(guān)信息

show processlist; 這個命令的作用?

顯示哪些線程正在運行

SHOW VARIABLES; 這個命令的作用?

顯示系統(tǒng)變量和值

SHOW VARIABLES like ’%conn%’; 這個命令的作用?

顯示系統(tǒng)變量名包含conn的值

LEFT JOIN 寫一個SQL語句?

SELECT A.id,A.class FROM A LEFT JOIN B ON A.cid=B.id

in, not ni, exist, not exist的作用和區(qū)別?

in在什么中
Not in 不在什么中
Exists 存在
Not exists 不存在

怎么找到數(shù)據(jù)庫的配置文件路徑?

在數(shù)據(jù)庫安裝目錄下,my.ini

簡述Linux下安裝PHP的過程?

安裝軟件之前先安裝編譯工具gcc、gcc-c++

拷貝源碼包,解包解壓縮

Cd /lamp/php進入php目錄

./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc指定安裝目錄和配置文件目錄

Make 編譯

Make install安裝

簡述Linux下安裝Mysql的過程?

Groupadd mysql 添加一個用戶組mysql

Useradd -g mysql mysql 添加一個mysql用戶指定分組為mysql

Cd /lamp/mysql 進入mysql目錄

./configure –prefix=/usr/local/mysql/ –with-extra-charsets=all

Make

Make all

簡述Linux下安裝apache的過程?

Cd /lamp/httpd 進去apache軟件目錄

./configure –prefix=/usr/local/apache2/ –sysconfdir=/etc/httpd/ –with-included-apr

Make

Make all

HTML/CSS/DIV/Javascritp:

1. 設(shè)計一個頁面(4個 div 第一個div 寬960px 居中;第2-4個div 3等分960px;)

<style>
Body{ Text-align:center; Margin:0; Padding:0; }
#box{ Width:960px; Margin:0 auto; }
.small{ Width:320px; Float:left; }
</style>
<div id=’box’>
<div class=’small’></div>
<div class=’small’></div>
<div class=’small’></div>
</div>

用javascript取得一個input的值?取得一個input的屬性?

document.getElementById(‘name’).value;
document.getElementById(‘name’).type;

用Jquery取得一個input的值?取得一個input的屬性?

$(“input[name=&#39;aa&#39;]“).val();
$(“input[name=&#39;aa&#39;]“).attr(‘type’);

請您寫一段ajax提交的js代碼,或者寫出ajax提交的過程邏輯。

var xmlhttp;
if(window.XMLHttpRquest){
xmlhttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
xmlhttp=new ActiveXObject(‘Microsoft.XMLHTTP’);
}
xmlhttp.open(‘GET’,’1.php?aa=name’,true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var text=xmlhttp.responseText;
}
}
}
xmlhttp.send(null);

簡述Cookie的設(shè)置及獲取過程

設(shè)置COOKIE的值:

Setcookie(名稱,值,保存時間,有效域);

獲取值:$_COOKIE['名稱'];

面向?qū)ο笾薪涌诤统橄箢惖膮^(qū)別及應(yīng)用場景?

1、有抽象方法的類叫做抽象類,抽象類中不一定只有抽象方法,抽象方法必須使用abstract關(guān)鍵字定義。

2、接口中全部是抽象方法,方法不用使用abstract定義。

3、當(dāng)多個同類的類要設(shè)計一個上層,通常設(shè)計為抽象類,當(dāng)多個異構(gòu)的類要設(shè)計一個上層,通常設(shè)計為接口。

用面向?qū)ο髞韺崿F(xiàn)A對象繼承B和C對象

Interface B{ ... }
Interface C{ ... }
Class A implements B,C{ ... }

寫出Smarty模板引擎中你最常用的關(guān)鍵詞

Assign Display Foreach
Section Loop Item
$smarty Now Const get

l 增加一個字段性別sex,寫出修改語句

Alert table user add sex enum(’0′,’1′);

查詢出年齡介于20歲到30歲之間的用戶

Select * from user where age>20 and age<30

如果是一個Web頻繁訪問的查詢,上題的查詢?nèi)绾蝺?yōu)化?

可對where后面的字段 age 建立索引,也可對語句建立存儲過程。

echo(),print(),print_r()的區(qū)別?

Echo,print是PHP語句, print_r是函數(shù),

Print()只能打印出簡單類型變量的值(如int,string),有返回值。

print_r()可以打印出復(fù)雜類型變量的值(如數(shù)組,對象)

echo 輸出一個或者多個字符串,無返回值

什么是模板技術(shù)、能夠使HTML和PHP分離開使用的模板?

模板技術(shù)就是使程序的邏輯代碼和界面分開的技術(shù)。

能夠使HTML和PHP分開的模板有:Smarty、Template、PHPlib Template、FastTemplate

對于大流量的網(wǎng)站,您采用什么樣的方法來解決訪問量問題?

優(yōu)化程序,優(yōu)化數(shù)據(jù)庫,如果程序和數(shù)據(jù)庫已經(jīng)最優(yōu)化,使用以下解決方法:

1、確定當(dāng)前服務(wù)器設(shè)備是否滿足流量需求。

2、使用Memcache緩存技術(shù),把動態(tài)內(nèi)容緩存到文件中,動態(tài)網(wǎng)頁直接調(diào)用這些文件,而不必再訪問數(shù)據(jù)庫。

3、禁止外部盜鏈,圖片和文件外部盜鏈會給服務(wù)器帶來大量的負(fù)載壓力,可以通過refer來禁止外部盜鏈,或者使用apache來配置禁止盜鏈。

4、控制大文件的下載,大文件的下載對于非SCSI硬盤來說會占用大量的資源,導(dǎo)致服務(wù)器的響應(yīng)能力下降。

5、使用不同的主機分流主要流量,使服務(wù)器均衡負(fù)載。

6、使用流量統(tǒng)計軟件統(tǒng)計分析網(wǎng)站流量,可以知道哪些地方耗費了大量的流量,哪些頁面需要再進行優(yōu)化。

mysql_fetch_row() 和mysql_fetch_array之間有什么區(qū)別?

Mysql_fetch_row()是從結(jié)果集中取出一行作為枚舉數(shù)組,mysql_fetch_array()是從結(jié)果集中取出一行作為索引數(shù)組或關(guān)聯(lián)數(shù)組或兩種方式都有。

實現(xiàn)中文字串截取無亂碼的方法

Mb_substr();

用PHP寫出顯示客戶端IP與服務(wù)器IP的代碼

獲取客戶端IP:$_SERVER(“REMOTE_ADDR”);

獲取服務(wù)器端IP:$_SERVER["SERVER_ADDR"];

有一個網(wǎng)頁地址, 比如PHP開發(fā)資源網(wǎng)主頁: http://www.phpres.com/index.html,如何得到它的內(nèi)容?

獲取網(wǎng)頁內(nèi)容:

$url=”http://www.phpres.com/index.html“;
$str=file_get_contents($url);
或 $ch=curl_init();
 curl_setopt($ch,CURLOPT_URL,’’);
 curl_setopt($ch,CURLOPT_HEADER,0);
 curl_exec($ch);
 curl_close($ch);

請寫一個函數(shù)驗證電子郵件的格式是否正確

function checkemail($email){
echo preg_match(‘/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+\.[0-9a-zA-Z]+$/’,$email)?’email格式正確‘:’email格式不正確‘;
}

簡述如何得到當(dāng)前執(zhí)行腳本路徑,包括所得到參數(shù)

用$_SERVER['SCRIPT_FILENAME'].$_SERVER['REQUEST_URI'];取得當(dāng)前頁面的完整路徑和參數(shù)。

取得參數(shù):$_SERVER['QUERY_STRING'];

JS表單彈出對話框函數(shù)是?獲得輸入焦點函數(shù)是?

Alert(); focus();

寫一個函數(shù),算出兩個文件的相對路徑

如 $a = ’/a/b/c/d/e.php’;

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

計算出 $b 相對于 $a 的相對路徑應(yīng)該是 http://www.cnblogs.com/c/d將()添上

$a=”http://www.cnblogs.com/a/b/c/d/e.php”;
$b=”http://www.cnblogs.com/a/b/12/34/c.php”;
$ainfo=parse_url($a);
$binfo=parse_url($b);
 
$apath=ltrim($ainfo[&#39;path&#39;],&#39;/&#39;);
$bpath=ltrim($binfo[&#39;path&#39;],&#39;/&#39;);
 
$arr=explode(&#39;/&#39;,$apath);
$brr=explode(&#39;/&#39;,$bpath);
$flag=false;
for($i=0;$i<count($arr);$i++){
 if($arr[$i]!==$brr[$i]){
  $ab[$i]=&#39;..&#39;;
  if(!$flag){
   for($j=$i;$j<count($brr);$j++){
    $bb[]=$brr[$j];
   }
   $flag=true;
  }
 }
}
$cha=array_merge($ab,$bb);
$cha=implode(&#39;/&#39;,$cha);
print_r($cha);

寫一個函數(shù),能夠遍歷一個文件夾下的所有文件和子文件夾。

function 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);
         return $files;
     }
}

數(shù)據(jù)庫索引有幾類,分別是什么?什么時候該用索引?

普通索引、主鍵索引、唯一索引

并非所有的數(shù)據(jù)庫都以相同的方式使用索引,作為通用規(guī)則,只有當(dāng)經(jīng)常查詢列中的數(shù)據(jù)時才需要在表上創(chuàng)建索引。

寫幾個魔術(shù)方法并說明作用?

__call()當(dāng)調(diào)用不存在的方法時會自動調(diào)用的方法
__autoload()在實例化一個尚未被定義的類是會自動調(diào)用次方法來加載類文件
__set()當(dāng)給未定義的變量賦值時會自動調(diào)用的方法
__get()當(dāng)獲取未定義變量的值時會自動調(diào)用的方法
__construct()構(gòu)造方法,實例化類時自動調(diào)用的方法
__destroy()銷毀對象時自動調(diào)用的方法
__unset()當(dāng)對一個未定義變量調(diào)用unset()時自動調(diào)用的方法
__isset()當(dāng)對一個未定義變量調(diào)用isset()方法時自動調(diào)用的方法
__clone()克隆一個對象
__tostring()當(dāng)輸出一個對象時自動調(diào)用的方法

$_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILES的意思是什么?

它們都是PHP預(yù)定義變量
$_REQUEST用來獲取post或get方式提交的值
$_POST用來獲取post方式提交的值
$_GET用來獲取get方式提交的值
$_COOKIE用來獲取cookie存儲的值
$_SESSION用來獲取session存儲的值
$_FILES用來獲取上傳文件表單的值

數(shù)組中下標(biāo)最好是什么類型的,為什么?

數(shù)組的下標(biāo)最好是數(shù)字類型的,數(shù)字類型的處理速度快。

++i和i++哪一個效率高,為什么?

++i效率比i++的效率更高,因為++i少了一個返回i的過程。

magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?

Magic_quotes_gpc()是php配置文件中的,如果設(shè)置為on則會自動POST,GET,COOKIE中的字符串進行轉(zhuǎn)義,在‘之前加\

Magic_quotes_runtime()是php中的函數(shù),如果參數(shù)為true則會數(shù)據(jù)庫中取出來的單引號、雙引號、反斜線自動加上反斜杠進行轉(zhuǎn)義。

框架中什么是單一入口和多入口,單一入口的優(yōu)缺點?

1、多入口就是通過訪問不同的文件來完成用戶請求。

單一入口指web程序所有的請求都指向一個腳本文件的。

2、單一入口更容易控制權(quán)限,方便對http請求可以進行安全性檢查。

缺點:URL看起來不那么美觀,特別是對搜索引擎來說不友好。

你對Memcach的理解,優(yōu)點有哪些?

Memcache是一種緩存技術(shù),在一定的時間內(nèi)將動態(tài)網(wǎng)頁經(jīng)過解析之后保存到文件,下次訪問時動態(tài)網(wǎng)頁就直接調(diào)用這個文件,而不必在重新訪問數(shù)據(jù)庫。使用memcache做緩存的好處是:提高網(wǎng)站的訪問速度,減輕高并發(fā)時服務(wù)器的壓力。

Memcache的優(yōu)點:穩(wěn)定、配置簡單、多機分布式存儲、速度快。

對關(guān)系型數(shù)據(jù)庫而言,索引是相當(dāng)重要的概念,請回答有關(guān)索引幾個問題:

a) 索引的目的是什么?

1、快速訪問數(shù)據(jù)表中的特定信息,提高檢索速度

2、創(chuàng)建唯一性索引,保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性

3、加速表和表之間的連接

4、使用分組和排序子句進行數(shù)據(jù)檢索時,可以顯著減少查詢中分組和排序的時間

b) 索引對數(shù)據(jù)庫系統(tǒng)的負(fù)面影響是什么?

負(fù)面影響:創(chuàng)建索引和維護索引需要耗費時間,這個時間隨著數(shù)據(jù)量的增加而增加;索引需要占用物理空間,不光是表需要占用數(shù)據(jù)空間,每個索引也需要占用物理空間;當(dāng)對表進行增、刪、改的時候索引也要動態(tài)維護,這樣就降低了數(shù)據(jù)的維護速度。

c) 為數(shù)據(jù)表建立索引的原則有哪些?

1、在最頻繁使用的、用以縮小查詢范圍的字段上建立索引

2、在平頻繁使用的、需要排序的字段上建立索引

d) 什么情況下不宜建立索引?

1、對于查詢中很少涉及的列或者重復(fù)值比較多的列,不宜建立索引

2、對于一些特殊的數(shù)據(jù)類型,不宜建立索引,比如文本字段(text),值范圍較少的知道等。

web應(yīng)用中,數(shù)據(jù)庫的讀取頻率遠(yuǎn)高于寫入頻率, 如何優(yōu)化MySQL而應(yīng)對此種情景?

使用memcache緩存技術(shù),將動態(tài)數(shù)據(jù)緩存到文件,訪問動態(tài)頁面時直接調(diào)用緩存文件,而不必重新訪問數(shù)據(jù)庫,這樣就減少了查詢數(shù)據(jù)庫的次數(shù)。

如果網(wǎng)站的訪問量很大,可以把數(shù)據(jù)庫讀寫服務(wù)器分開,使用多臺服務(wù)器去處理數(shù)據(jù)庫查詢,使用較少的服務(wù)器去處理數(shù)據(jù)庫的寫入和修改。

include與require的區(qū)別?

1.include()在執(zhí)行文件時每次都要進行讀取和評估

require()文件只處理一次(實際上文件內(nèi)容替換了require()語句)

2.require()通常放在PHP腳本程序的最前面

include()的使用和require()一樣,一般放在流程控制的處理區(qū)段中,PHP腳本文件讀到include()語句時,才將它包含的文件讀進來,這種方式,可以把程序執(zhí)行時的流程簡單化

3,require()和include()語句是語言結(jié)構(gòu),不是真正的函數(shù),可以像PHP的其他語言結(jié)構(gòu)一樣

4,include_once()和require_once()語句也是在腳本執(zhí)行期間包括并運行指定文件,與include()require()唯一的區(qū)別是如果文件中的代碼已經(jīng)被包括了,則不會再次包括.

5,require()包含文件失敗,停止執(zhí)行,給出錯誤(致命的)

include()常用于動態(tài)包含.

通常是自動加載的文件,即使加載出錯,整個程序還是繼續(xù)執(zhí)行

一個頁面聲明,另一個頁面調(diào)用

包函文件失敗,繼續(xù)向下執(zhí)行,返回一條警告

PHP字符串中單引號與雙引號的區(qū)別?

單引號不能解釋變量,而雙引號可以解釋變量。

單引號不能轉(zhuǎn)義字符,在雙引號中可以轉(zhuǎn)義字符。

php中,模板引擎的目的是什么? 你用過哪些模板引擎?

使用模板引擎的目的是使程序的邏輯代碼和html界面代碼分離開,是程序的結(jié)構(gòu)更清晰。

使用過的模板引擎:Smarty、ThinkPHP的ThinkTemplate

指出以下代碼片段中的SQL注入漏洞以及解決方法(magic_quotes_gpc = off)

mysql_query(“select id,title from content where catid=’{$_GET[catid]}’ and title like ’%$_GET[keywords]%’”, $link);

注入漏洞主要存在用戶提交的數(shù)據(jù)上,這里的注入漏洞主要是$_GET[catid]和$_GET[keyword]

解決注入漏洞:

$_GET[catid]=intval($_GET[catid]);
$sql=”select id,title from content where catid=’{$_GET[catid]}’ and title like ’%$_GET[keywords]%”;
$sql=addslashes($sql);
Mysql_query($sql);

分別指出php.ini中 magic_quotes_gpc, magic_quotes_runtime兩項參數(shù)的作用.

Magic_quotes_gpc的作用是在POST、GET、COOKIE數(shù)據(jù)上使用addslashes()自動轉(zhuǎn)義。

Magic_quotes_runtime參數(shù)的作用是設(shè)置狀態(tài),當(dāng)狀態(tài)為0時則關(guān)閉自動轉(zhuǎn)義,設(shè)置為1則自動轉(zhuǎn)義,將數(shù)據(jù)庫中取出來的單引號、雙引號、反斜線這些字符加上反斜杠轉(zhuǎn)義。

寫出以下php代碼的運行結(jié)果:

<?php
function foo($i) {
$i++;
echo $i ;
}
function bar(&$i) {
}
$i = 10 ;
echo $i++ , ++$i; 輸出:10,12
foo($i); 輸出:13
bar($i); 輸出:無輸出

如何快速下載一個遠(yuǎn)程http服務(wù)器上的圖片文件到本地?

$file=”";
$fp=fopen($file,’rb’);
$img=fread($fp,10000);
$dir=”./”;
$local=fopen($dir.’/’.basename($file),’w&#39;);
Fwrite($local,$img);

什么是時間戳? 如何取得當(dāng)前時間戳?

時間戳是從1970年1月1日 00:00:00到指定日期的秒數(shù)。

獲取當(dāng)前時間戳:time()

了解XSS攻擊嗎? 如何防止 ?

XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權(quán)模式去執(zhí)行攻擊者構(gòu)造的腳本,然后利用不安全的Activex控件執(zhí)行惡意的行為。

使用htmlspecialchars()函數(shù)對提交的內(nèi)容進行過濾,使字符串里面的特殊符號實體化。

SQL注入漏洞產(chǎn)生的原因 ? 如何防止?

SQL注入產(chǎn)生的原因:程序開發(fā)過程中不注意規(guī)范書寫sql語句和對特殊字符進行過濾,導(dǎo)致客戶端可以通過全局變量POST和GET提交一些sql語句正常執(zhí)行。

防止SQL注入:

1、開啟配置文件中的magic_quotes_gpc和magic_quotes_runtime設(shè)置

2、執(zhí)行sql語句時使用addslashes進行sql語句轉(zhuǎn)換

3、Sql語句書寫盡量不要省略小引號和單引號

4、過濾掉sql語句中的一些關(guān)鍵字:update、insert、delete、select、*

5、提高數(shù)據(jù)庫表和字段的命名技巧,對一些重要的字段根據(jù)程序的特點命名,取不易被猜到的。

6、Php配置文件中設(shè)置register_globals為off,關(guān)閉全局變量注冊

7、控制錯誤信息,不要再瀏覽器上輸出錯誤信息,將錯誤信息寫到日志文件中。

一個字節(jié)占多少bit ? 一個IPv4地址占幾個字節(jié)? 一個IPv6地址呢?

一個字節(jié)占8bit,一個IPV4占用4字節(jié),一個IPV6占用16字節(jié)。

142.M ADSL寬帶連接, 理想情況下, 最大下載速度是多少KB/s ?

256KB/s

143.請寫出一個正則表達(dá)式,用于匹配一個HTML文件中標(biāo)記中的圖片地址

$url=”<img src=’11.jpg’/>”;
/<img[\s]*src=[&#39;|\"](.*)[&#39;|\"][\s]*\/>/

145.Fatal error: Call to undefined method ge_user() in /website/index.php on line 39

調(diào)用了未定義的方法ge_user(),檢查程序中有沒有定義此方法

146.Fatal error: Class ’client’ not found in /website/index.php on line 173

類client沒有找到,檢查文件中有沒有client類,或者有沒有包含client類文件

Warning: Cannot modify header information - headers already sent by (output started at /website/index.php:1) in /website/index.php on line 3

提示文件前面有輸出,檢查是否有輸出,或者編碼

148.Warning:session_start(): open(/website/tmp/sess_47e067121facf033785f9a1cb16d243b, O_RDWR) failed: No such file or directory (2) in /website/index.php on line 10

沒有找到文件或目錄,檢查文件是否存在

149.Parse error: syntax error, unexpected T_STRING in /website/index.php on line 18

18行語法錯誤,檢查語法

150.Warning:fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in /website/index.php on line 2

沒有找到welcome.txt文件,檢查文件是否存在

1、抓取遠(yuǎn)程圖片到本地,你會用什么函數(shù)?

fsockopen, A

3、用PHP打印出前一天的時間,打印格式是2007年5月10日22:21:21

Echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’));

4、javascript能否定義二維數(shù)組,如果不能你如何解決?

javascript不支持二維數(shù)組定義,可以用arr[0] = new array()來解決

5、假設(shè)a.html和b.html在同一個文件夾下面,用javascript實現(xiàn)當(dāng)打開a.html五秒鐘后,自動跳轉(zhuǎn)到b.html。

<script>
function go2b(){
 window.location = “b.html”;
 window.close();
}
setTimeout( “go2b()”,5000 ); //5秒鐘后自動執(zhí)行g(shù)o2b()
</script>
 
//正在瀏覽當(dāng)前頁面用戶的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"].”<br />”;
//查詢(query)的字符串(URL 中第一個問號 ? 之后的內(nèi)容):id=1&bi=2
echo $_SERVER["QUERY_STRING"].”<br />”;
//當(dāng)前運行腳本所在的文檔根目錄:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"].”<br />”;

7、在HTTP 1.0中,狀態(tài)碼 401 的含義是未授權(quán)____;如果返回“找不到文件”的提示,則可用 header 函數(shù),其語句為header(“HTTP/1.0 404 Not Found”);

401表示未授權(quán);header(“HTTP/1.0 404 Not Found”);

9、把 John 新增到 users 陣列?

$users[] = ‘john’; array_push($users,‘john’);

在PHP中error_reporting這個函數(shù)有什么作用?

error_reporting() 設(shè)置 PHP 的報錯級別并返回當(dāng)前級別。

13、如何修改SESSION的生存時間(1分).

方法1:將php.ini中的session.gc_maxlifetime設(shè)置為9999重啟apache

方法2:$savePath = “./session_save_dir/”;

$lifeTime = 小時 * 秒;

session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();

方法3:

setcookie() and session_set_cookie_params($lifeTime);

14、有一個網(wǎng)頁地址, 比如PHP開發(fā)資源網(wǎng)主頁: http://www.phpres.com/index.html,如何得到它的內(nèi)容?($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”);

16、寫一個函數(shù),盡可能高效的,從一個標(biāo)準(zhǔn) 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[&#39;path&#39;]);
$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);
}
}

使用五種以上方式獲取一個文件的擴展名

要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,

必須使用PHP自帶的處理函數(shù)進行處理,方法不能明顯重復(fù),可以封裝成函數(shù) 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[&#39;extension&#39;];
}
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 ? ‘相等’ : ‘不相等’;
?>

相等 相等 不相等

MySQL數(shù)據(jù)庫中的字段類型varchar和char的主要區(qū)別是什么?那種字段的查找效率要高,為什么?

Varchar是變長,節(jié)省存儲空間,char是固定長度。查找效率要varchar型快,因為varchar是非定長,必須先查找長度,然后進行數(shù)據(jù)的提取,比char定長類型多了一個步驟,所以效率低一些

請使用JavaScript寫出三種產(chǎn)生一個Image 標(biāo)簽的方法(提示:從方法、對象、HTML角度考慮)

(1)var img = new Image();
(2)var img = document.createElement(“image”)
(3)img.innerHTML = “<img src=”xxx.jpg” />”

請描述出兩點以上XHTML和HTML最顯著的區(qū)別

(1)XHTML必須強制指定文檔類型DocType,HTML不需要

(2)XHTML所有標(biāo)簽必須閉合,HTML比較隨意

寫出三種以上MySQL數(shù)據(jù)庫存儲引擎的名稱(提示:不區(qū)分大小寫)

MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十幾個引擎

求兩個日期的差數(shù),例如2007-2-5 ~ 2007-3-6 的日期差數(shù)

方法一:

<?php
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′);
?>

方法二:

<?php
$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;

方法三:echo abs(strtotime(“2007-2-1″)-strtotime(“2007-3-1″))/60/60/24 計算時間差

請寫一個函數(shù),實現(xiàn)以下功能:

字符串“open_door” 轉(zhuǎn)換成 “OpenDoor”、”make_by_id” 轉(zhuǎn)換成 ”MakeById”。

方法:

function str_explode($str){
$str_arr=explode(“_”,$str);$str_implode=implode(” “,$str_arr); $str_implode=implode
(“”,explode(” “,ucwords($str_implode)));
return $str_implode;
}
$strexplode=str_explode(“make_by_id”);print_r($strexplode);

方法二:

$str=”make_by_id!”;
$expStr=explode(“_”,$str);
for($i=0;$i<count($expStr);$i++){
echo ucwords($expStr[$i]);
}

方法三:echo str_replace(‘ ‘,”,ucwords(str_replace(‘_’,’ ‘,’open_door’)));

一個表中的Id有多個記錄,把所有這個id的記錄查出來,并顯示共有多少條記錄數(shù),用SQL語句及視圖、存儲過程分別實現(xiàn)。

DELIMITER //
create procedure 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;

方法:視圖:

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

js中網(wǎng)頁前進和后退的代碼

前進: history.forward();=history.go(1);

后退: history.back();=history.go(-1);

echo count(“abc”); 輸出什么?

答案:1

count — 計算數(shù)組中的單元數(shù)目或?qū)ο笾械膶傩詡€數(shù)

int count ( mixed$var [, int $mode ] ), 如果 var 不是數(shù)組類型或者實現(xiàn)了 Countable 接口的對象,將返回1,有一個例外,如果 var 是 NULL 則結(jié)果是 0。

對于對象,如果安裝了 SPL,可以通過實現(xiàn) Countable 接口來調(diào)用 count()。該接口只有一個方法 count(),此方法返回 count() 函數(shù)的返回值。

有一個一維數(shù)組,里面存儲整形數(shù)據(jù),請寫一個函數(shù),將他們按從大到小的順序排列。要求執(zhí)行效率高。并說明如何改善執(zhí)行效率。(該函數(shù)必須自己實現(xiàn),不能使用php函數(shù))

<?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、請舉例說明在你的開發(fā)過程中用什么方法來加快頁面的加載速度

要用到服務(wù)器資源時才打開,及時關(guān)閉服務(wù)器資源,數(shù)據(jù)庫添加索引,頁面可生成靜態(tài),圖片等大文件單獨服務(wù)器。使用代碼優(yōu)化工具。

31、.以下的代碼會產(chǎn)生什么?為什么?

$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;

由于函式 multiply() 沒有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。

HTTP協(xié)定中GET、POST和HEAD的差別?

HEAD: 只請求頁面的首部。

GET: 請求指定的頁面訊息,並傳回實體主體。

POST: 請求伺服器接受所指定的文件作為對所識別的URI的新的從屬實體。

(1)HTTP 定義了與伺服器互動的不同方法,最基本的方法是 GET 和 POST。事實上 GET 適用於多數(shù)請求,而保留 POST 僅用於更新站點。

(2)在FORM提交的時候,如果不指定Method,則預(yù)設(shè)為GET請 求,F(xiàn)orm中提交的資料將會附加在url之後,以?分開與url分開。字母數(shù)字字元原樣發(fā)送,但空格轉(zhuǎn)換為“ “號,其它符號轉(zhuǎn)換為%XX,其中XX為 該符號以16進位表示的ASCII(或ISO Latin-1)值。 GET請求請?zhí)峤坏馁Y料放置在HTTP請求協(xié)定頭中,而POST提交的資料則放在實體資料中;

GET方式提交的資料最多只能有1024字節(jié),而POST則沒有此限制。

(3)GET 這個是瀏覽器用語向伺服器請求最常用的方法。 POST這個方法也是用來傳送資料的,但是與GET不同的是,使用POST的時候,資料不是附在URI後面?zhèn)鬟f的,而是要做為獨立的行來傳遞,此時還必須要傳送一個Content_length標(biāo)題,以標(biāo)明資料長度,隨後一個空白行,然後就是實際傳送的資料。網(wǎng)頁的表單通常是用POST來傳送的。

推薦PHP影片教學(xué):http://ipnx.cn/course/list/29/type/2.html

以上是2022年最新的PHP面試題(附答案)的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
PHP變量範(fàn)圍解釋了 PHP變量範(fàn)圍解釋了 Jul 17, 2025 am 04:16 AM

PHP變量作用域常見問題及解決方法包括:1.函數(shù)內(nèi)部無法訪問全局變量,需使用global關(guān)鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次並在多次調(diào)用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過濾;4.匿名函數(shù)需通過use關(guān)鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助於避免錯誤並提升代碼穩(wěn)定性。

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗證來源與類型、控製文件名與路徑、設(shè)置服務(wù)器限制並二次處理媒體文件。 1.驗證上傳來源通過token防止CSRF並通過finfo_file檢測真實MIME類型使用白名單控制;2.重命名文件為隨機字符串並根據(jù)檢測類型決定擴展名存儲至非Web目錄;3.PHP配置限制上傳大小及臨時目錄Nginx/Apache禁止訪問上傳目錄;4.GD庫重新保存圖片清除潛在惡意數(shù)據(jù)。

在PHP中評論代碼 在PHP中評論代碼 Jul 18, 2025 am 04:57 AM

PHP註釋代碼常用方法有三種:1.單行註釋用//或#屏蔽一行代碼,推薦使用//;2.多行註釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧註釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時需注意閉合符號和避免嵌套。

發(fā)電機如何在PHP中工作? 發(fā)電機如何在PHP中工作? Jul 11, 2025 am 03:12 AM

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

撰寫PHP評論的提示 撰寫PHP評論的提示 Jul 18, 2025 am 04:51 AM

寫好PHP註釋的關(guān)鍵在於明確目的與規(guī)範(fàn),註釋應(yīng)解釋“為什麼”而非“做了什麼”,避免冗餘或過於簡單。 1.使用統(tǒng)一格式,如docblock(/*/)用於類、方法說明,提升可讀性與工具兼容性;2.強調(diào)邏輯背後的原因,如說明為何需手動輸出JS跳轉(zhuǎn);3.在復(fù)雜代碼前添加總覽性說明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標(biāo)記待辦事項與問題,便於後續(xù)追蹤與協(xié)作。好的註釋能降低溝通成本,提升代碼維護效率。

快速PHP安裝教程 快速PHP安裝教程 Jul 18, 2025 am 04:52 AM

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

如何通過php中的索引訪問字符串中的字符 如何通過php中的索引訪問字符串中的字符 Jul 12, 2025 am 03:15 AM

在PHP中獲取字符串特定索引字符可用方括號或花括號,但推薦方括號;索引從0開始,超出範(fàn)圍訪問返回空值,不可賦值;處理多字節(jié)字符需用mb_substr。例如:$str="hello";echo$str[0];輸出h;而中文等字符需用mb_substr($str,1,1)獲取正確結(jié)果;實際應(yīng)用中循環(huán)訪問前應(yīng)檢查字符串長度,動態(tài)字符串需驗證有效性,多語言項目建議統(tǒng)一使用多字節(jié)安全函數(shù)。

學(xué)習(xí)PHP:初學(xué)者指南 學(xué)習(xí)PHP:初學(xué)者指南 Jul 18, 2025 am 04:54 AM

易於效率,啟動啟動tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

See all articles