<?php
$arr = array(1,43,54,62,21,66,32,78,36,76,39);
function countLenght($arr){
$length = count($arr);
if ($length <= 1) {
return false;
}else{
return $length;
}
}
// 1永高、冒泡
function getBubble($arr){
$array_length = count($arr);
if ($array_length <= 1) {
return $arr;
}
for ($i=1; $i < $array_length-1; $i++) { //注意這里的$i從1開(kāi)始
for ($j=0; $j < $array_length-$i; $j++) {
if ($arr[$j]>$arr[$j+1]) {
$tmp = $arr[$j+1];
$arr[$j+1] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
}
echo '<pre>';
// print_r(getBubble($arr));exit();
// 2、選擇
function getSelect($arr){
$array_length = count($arr);
if ($array_length<=1) {
return $arr;
}
for ($i=0; $i < $array_length-1; $i++) {
$p = $i;//設(shè)置最小值得下標(biāo)為$i
for ($j=$i+1; $j < $array_length; $j++) { //$j的初始值為$i+1
if ( $arr[$p] > $arr[$j]) {
$p = $j;
}
}
if ($p != $i ) {
$tmp = $arr[$p];
$arr[$p] = $arr[$i];
$arr[$i] = $tmp;
}
}
return $arr;
}
// print_r(getSelect($arr));
// 3、插入
// 思路 2 1
// 3 2 2 1對(duì)比
function getInsert($arr){
$array_length = count($arr);
if ($array_length <= 1) {
return $arr;
}
//假設(shè)第一個(gè)值為最小值,即下標(biāo)為0的
for ($i=1; $i < $array_length; $i++) {
$insertValue = $arr[$i];
$insertIndex = $i-1;
while ( $insertIndex >= 0 && $insertValue < $arr[$insertIndex]) {
$arr[$insertIndex+1] = $arr[$insertIndex];
$insertIndex--;
}
$arr[$insertIndex+1] = $insertValue;
}
return $arr;
}
// print_r(getInsert($arr));
// 4号醉、快速
function quickSort($arr){
$array_length = count($arr);
if ($array_length <= 1) {
return $arr;
}
$baseValue = $arr[0];
$left_array = array();
$right_array = array();
for ($i=1; $i < $array_length; $i++) {
if ($baseValue>$arr[$i]) {
$left_array[] = $arr[$i];
}else{
$right_array[] = $arr[$i];
}
}
$left_array = quickSort($left_array);
$right_array = quickSort($right_array);
return array_merge($left_array,array($baseValue),$right_array);
}
// print_r(quickSort($arr));
// ===========================================================================================================
date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s',time());echo '
';
echo strtotime('-1 days');
$string = 'i am very good';
explode(' ', $string);//字符串轉(zhuǎn)數(shù)組
implode('
', $arr);//數(shù)組轉(zhuǎn)字符串
echo $str = 'js is not java';
echo "
";
echo preg_replace('/js|java/', 'php', $str);
echo "
";
$data = '08/26/2003';
echo preg_replace('/(\d+)/(\d+)/(\d+)/', '$3/$1/$2', $data);
echo "
";
//主鍵索引苍苞、唯一索引、普通索引姓建、組合索引
//desc select * from user where id=5
//alter table user add index in_usrname(username);增加索引缓溅、索引優(yōu)化
//alter table user drop index in_usrname;刪除索引
echo $_SERVER['REQUEST_URI'];
$_SERVER['HTTP_HOST'];
// $_SERVER['HTTP_REFERER'];
$_SERVER['SERVER_NAME'];
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
//如何進(jìn)行防sql注入
// 表單盡量使用post蛇损,表單判斷控制走get,因?yàn)間et比post快
// 用$_SERVER['HTTP_REFERER']來(lái)判斷提交者的源頭
// 開(kāi)啟addslashes
// 密碼一定要加密
// 使用預(yù)處理
//YII是一個(gè)基于組件的高性能的php框架,用于開(kāi)發(fā)大規(guī)模的web應(yīng)用,采用嚴(yán)格的oop編寫(xiě)
echo ord('B');
echo chr(65);
//為什么把我一個(gè)人丟在夢(mèng)里
//光明從來(lái)是由黑暗而來(lái)
//你猜我手里拿了什么淤齐?小呆瓜
//面向?qū)ο笾饕卣鳎悍庋b束世、繼承、多態(tài)
// 面向?qū)ο笫浅绦虻囊环N設(shè)計(jì)模式床玻,它利于提高程序的重用性,使程序結(jié)構(gòu)更加清晰沉帮,程序設(shè)計(jì)的設(shè)計(jì)思想锈死,提高程序靈活度
//session保存在服務(wù)器端,cookie保存在客戶的穆壕,session依賴cookie進(jìn)行傳輸待牵,如果cookie被禁用了,session將不能繼續(xù)使用
//302 重定向
// 403 服務(wù)器拒絕訪問(wèn)
//500 服務(wù)器內(nèi)部錯(cuò)誤
// 304 緩存未過(guò)期 404訪問(wèn)頁(yè)面不存在
Myism和innodb的基本區(qū)別
在增刪改查方面myisam要優(yōu)于innodb表引擎喇勋,當(dāng)數(shù)據(jù)量特別大時(shí)他們的速度相差不大
innodb支持myisam所不具備的事務(wù)支持缨该、存儲(chǔ)過(guò)程和行級(jí)鎖等
php有哪些超全局變量:$_POST $_GET $_SERVER $_FILES $_RUQUEST $GLOBALS $_SESSION $_COOKIE
create table `news`(
`id` int(11) not null auto_increment,
`name` varchar(30) not null default '',
`age` int(3) not null default '',
primary key('id')
)engine=inndb default charset=utf8;
iconv('gbk', 'utf8', '我們');
每一個(gè)屬性不可再分解
每一個(gè)屬性不可分解,并且非碼屬性完全依賴碼屬性
二之上川背,所有的非碼屬性沒(méi)有一個(gè)是傳遞函數(shù)依賴于候選碼
function fetchDir($dir){
foreach (glob($dir.'\*') as $file) {
echo $file,'\n';
if (is_dir($file)) {
fetchDir($file);
}
}
}
?>
SQL面試題:有A B C三列,用SQL語(yǔ)句實(shí)現(xiàn):當(dāng)A列大于B列時(shí)選擇A列否則選擇B列
.請(qǐng)教一個(gè)面試中遇到的SQL語(yǔ)句的查詢問(wèn)題
表中有A B C三列,用SQL語(yǔ)句實(shí)現(xiàn):當(dāng)A列大于B列時(shí)選擇A列否則選擇B列贰拿,當(dāng)B列大于C列時(shí)選擇B列否則選擇C列。
select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name
drop table table1
create table table1(
a int,
b int,
c int
)
insert into table1 values(22,24,23)
select * from table1
select (case when a>b then a else b end),(case when b>c then b else c end)
from table1
select (case when a>b then a
when a>c then a
when b>c then b else c
end)
from table1
最近在學(xué)習(xí)yii2的過(guò)程中熄云,在網(wǎng)上看到很多關(guān)于yii膨更,thinkphp,laravel等框架的對(duì)比缴允,每個(gè)人對(duì)于框架的評(píng)論有褒有貶荚守,喜歡的贊嘆不已,不喜歡的各種吐槽练般。搞得我有點(diǎn)覺(jué)得學(xué)習(xí)yii是浪費(fèi)時(shí)間的行為矗漾,但是我覺(jué)得一個(gè)框架如此流行肯定有它自身的優(yōu)秀之處的,所以在網(wǎng)上找了一些關(guān)于yii的評(píng)價(jià)之類的薄料,梳理一下敞贡。
yii的手冊(cè)不是手冊(cè),是類庫(kù)說(shuō)明都办,有對(duì)象編程基礎(chǔ)的人看嫡锌,毫無(wú)問(wèn)題,但是如果你只學(xué)過(guò)php琳钉、asp這些势木,可能短時(shí)間很難看懂他的文檔,這一點(diǎn)上TP完爆YII歌懒。
但是YII的GII腳手架功能啦桌,完爆TP的半自動(dòng)化,他可以自動(dòng)生成分組、模型甫男、CURD頁(yè)面及邏輯且改,你只要在數(shù)據(jù)庫(kù)模型里把外鍵指定好甚至還能為你自動(dòng)生成模型關(guān)聯(lián)。
YII的關(guān)聯(lián)才叫關(guān)聯(lián)板驳,TP的關(guān)聯(lián)又跛,在某些情況下不夠好,比如若治,TP的關(guān)聯(lián)模型出一個(gè)userinfo字段慨蓝,這個(gè)字段存儲(chǔ)的是tbl_userinfo表里的某個(gè)數(shù)據(jù),通常這個(gè)時(shí)候TP只能顯示這個(gè)表里已有的數(shù)據(jù)端幼,但是如果這個(gè)表也關(guān)聯(lián)了別的表礼烈,那么YII可以讀取關(guān)聯(lián)數(shù)據(jù)的關(guān)聯(lián)數(shù)據(jù)的關(guān)聯(lián)數(shù)據(jù)。
1.從開(kāi)發(fā)效率上來(lái)說(shuō)婆跑,YII明顯更勝一籌
2.但是從入門難度上來(lái)說(shuō)此熬,TP更勝一籌,文檔也是tp更好滑进。
3.從支持來(lái)說(shuō)犀忱,YII的擴(kuò)展要更多,因?yàn)閲?guó)外也有一撥人在開(kāi)發(fā)扶关,畢竟他在國(guó)外也算是主流框架之一峡碉。而tp的大部分?jǐn)U展靠的是官方。
4.tp的定位可能是輕量級(jí)的快速開(kāi)發(fā)驮审,yii可能是中小量級(jí)的高效開(kāi)發(fā)鲫寄。兩者定位上可能有所區(qū)別。
5.有很多大站疯淫、高并發(fā)的站是用yii做的地来,導(dǎo)致在名聲上,yii聽(tīng)上去比tp高大上熙掺,事實(shí)上初學(xué)者也不可能去做大項(xiàng)目未斑。
6、Yii 框架的代碼風(fēng)格上于net比較接近币绩,可以很方便的閱讀php代碼蜡秽,上手快。
7缆镣、Yii 的框架對(duì)擴(kuò)展支持相當(dāng)高芽突,很方便擴(kuò)展,
8董瞻、很重要的性能寞蚌,Yii 的性能相對(duì)優(yōu)秀田巴,而且屬于輕量級(jí)框架。spl_autoload_register 預(yù)注冊(cè)挟秤,按需載入文件等對(duì)性能都有很大提高壹哺。
8、modules 設(shè)計(jì)是一個(gè)很優(yōu)秀的東西艘刚,他理論上可以無(wú)限嵌套管宵,當(dāng)然不建議嵌套超過(guò)三層。
9攀甚、widget 窗口小部件的應(yīng)用啄糙,可以更加方便的構(gòu)造通用模塊。
10云稚、其實(shí)集成的model,以及CActiveRecord模式 包含的驗(yàn)證機(jī)制沈堡,都是很好的東西静陈,但是約束性也相對(duì)強(qiáng)一些。
11诞丽、Yii框架封裝了各種緩存方式鲸拥,讓你只需要調(diào)用統(tǒng)一的方法就可以在不同的緩存中切換。
ThinkPHP V5.0——為API開(kāi)發(fā)而設(shè)計(jì)的高性能框架
高性能 PHP 框架僧免,ThinkPHP 5.0.0 Beta 發(fā)布
ThinkPHP5.0.0版本是一個(gè)顛覆和重構(gòu)版本刑赶,采用全新的架構(gòu)思想,引入了很多的PHP新特性懂衩,優(yōu)化了核心撞叨,減少了依賴,實(shí)現(xiàn)了真正的惰性加載浊洞。
GitHub項(xiàng)目地址:https://github.com/liu21st/think
ThinkPHP5在保持快速開(kāi)發(fā)和大道至簡(jiǎn)的核心理念不變的同時(shí)牵敷,PHP版本要求提升到5.4,對(duì)已有的CBD模式做了更深的強(qiáng)化法希,優(yōu)化核心枷餐,減少依賴,基于全新的架構(gòu)思想和命名空間實(shí)現(xiàn)苫亦,是ThinkPHP突破原有框架思路的顛覆之作毛肋,其主要特性包括:
基于命名空間和眾多PHP新特性
核心功能組件化
強(qiáng)化路由功能
更靈活的控制器
配置文件可分離
簡(jiǎn)化擴(kuò)展機(jī)制
API支持完善
整合SocketLog用于支持遠(yuǎn)程調(diào)試
命令行訪問(wèn)支持
REST支持
引導(dǎo)文件支持
方便的自動(dòng)生成定義
真正惰性加載
分布式環(huán)境支持
更多的社交類庫(kù)
ThinkPHP5的運(yùn)行環(huán)境要求PHP5.4以上,目前處于開(kāi)發(fā)測(cè)試階段屋剑,不排除正式發(fā)布之前有所調(diào)整润匙, 請(qǐng)謹(jǐn)慎用于實(shí)際項(xiàng)目 _。
詳細(xì)開(kāi)發(fā)文檔參考 ThinkPHP5開(kāi)發(fā)手冊(cè)
mvc和MVP的區(qū)別
正則表達(dá)