<?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開始
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;//設置最小值得下標為$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對比
function getInsert($arr){
$array_length = count($arr);
if ($array_length <= 1) {
return $arr;
}
//假設第一個值為最小值,即下標為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);//字符串轉數組
implode('
', $arr);//數組轉字符串
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);增加索引、索引優化
//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
//如何進行防sql注入
// 表單盡量使用post,表單判斷控制走get,因為get比post快
// 用$_SERVER['HTTP_REFERER']來判斷提交者的源頭
// 開啟addslashes
// 密碼一定要加密
// 使用預處理
//YII是一個基于組件的高性能的php框架,用于開發大規模的web應用,采用嚴格的oop編寫
echo ord('B');
echo chr(65);
//為什么把我一個人丟在夢里
//光明從來是由黑暗而來
//你猜我手里拿了什么?小呆瓜
//面向對象主要特征:封裝、繼承、多態
// 面向對象是程序的一種設計模式,它利于提高程序的重用性,使程序結構更加清晰,程序設計的設計思想,提高程序靈活度
//session保存在服務器端,cookie保存在客戶的,session依賴cookie進行傳輸,如果cookie被禁用了,session將不能繼續使用
//302 重定向
// 403 服務器拒絕訪問
//500 服務器內部錯誤
// 304 緩存未過期 404訪問頁面不存在
Myism和innodb的基本區別
在增刪改查方面myisam要優于innodb表引擎,當數據量特別大時他們的速度相差不大
innodb支持myisam所不具備的事務支持、存儲過程和行級鎖等
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', '我們');
每一個屬性不可再分解
每一個屬性不可分解,并且非碼屬性完全依賴碼屬性
二之上,所有的非碼屬性沒有一個是傳遞函數依賴于候選碼
function fetchDir($dir){
foreach (glob($dir.'\*') as $file) {
echo $file,'\n';
if (is_dir($file)) {
fetchDir($file);
}
}
}
?>
SQL面試題:有A B C三列,用SQL語句實現:當A列大于B列時選擇A列否則選擇B列
.請教一個面試中遇到的SQL語句的查詢問題
表中有A B C三列,用SQL語句實現:當A列大于B列時選擇A列否則選擇B列,當B列大于C列時選擇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
最近在學習yii2的過程中,在網上看到很多關于yii,thinkphp,laravel等框架的對比,每個人對于框架的評論有褒有貶,喜歡的贊嘆不已,不喜歡的各種吐槽。搞得我有點覺得學習yii是浪費時間的行為,但是我覺得一個框架如此流行肯定有它自身的優秀之處的,所以在網上找了一些關于yii的評價之類的,梳理一下。
yii的手冊不是手冊,是類庫說明,有對象編程基礎的人看,毫無問題,但是如果你只學過php、asp這些,可能短時間很難看懂他的文檔,這一點上TP完爆YII。
但是YII的GII腳手架功能,完爆TP的半自動化,他可以自動生成分組、模型、CURD頁面及邏輯,你只要在數據庫模型里把外鍵指定好甚至還能為你自動生成模型關聯。
YII的關聯才叫關聯,TP的關聯,在某些情況下不夠好,比如,TP的關聯模型出一個userinfo字段,這個字段存儲的是tbl_userinfo表里的某個數據,通常這個時候TP只能顯示這個表里已有的數據,但是如果這個表也關聯了別的表,那么YII可以讀取關聯數據的關聯數據的關聯數據。
1.從開發效率上來說,YII明顯更勝一籌
2.但是從入門難度上來說,TP更勝一籌,文檔也是tp更好。
3.從支持來說,YII的擴展要更多,因為國外也有一撥人在開發,畢竟他在國外也算是主流框架之一。而tp的大部分擴展靠的是官方。
4.tp的定位可能是輕量級的快速開發,yii可能是中小量級的高效開發。兩者定位上可能有所區別。
5.有很多大站、高并發的站是用yii做的,導致在名聲上,yii聽上去比tp高大上,事實上初學者也不可能去做大項目。
6、Yii 框架的代碼風格上于net比較接近,可以很方便的閱讀php代碼,上手快。
7、Yii 的框架對擴展支持相當高,很方便擴展,
8、很重要的性能,Yii 的性能相對優秀,而且屬于輕量級框架。spl_autoload_register 預注冊,按需載入文件等對性能都有很大提高。
8、modules 設計是一個很優秀的東西,他理論上可以無限嵌套,當然不建議嵌套超過三層。
9、widget 窗口小部件的應用,可以更加方便的構造通用模塊。
10、其實集成的model,以及CActiveRecord模式 包含的驗證機制,都是很好的東西,但是約束性也相對強一些。
11、Yii框架封裝了各種緩存方式,讓你只需要調用統一的方法就可以在不同的緩存中切換。
ThinkPHP V5.0——為API開發而設計的高性能框架
高性能 PHP 框架,ThinkPHP 5.0.0 Beta 發布
ThinkPHP5.0.0版本是一個顛覆和重構版本,采用全新的架構思想,引入了很多的PHP新特性,優化了核心,減少了依賴,實現了真正的惰性加載。
GitHub項目地址:https://github.com/liu21st/think
ThinkPHP5在保持快速開發和大道至簡的核心理念不變的同時,PHP版本要求提升到5.4,對已有的CBD模式做了更深的強化,優化核心,減少依賴,基于全新的架構思想和命名空間實現,是ThinkPHP突破原有框架思路的顛覆之作,其主要特性包括:
基于命名空間和眾多PHP新特性
核心功能組件化
強化路由功能
更靈活的控制器
配置文件可分離
簡化擴展機制
API支持完善
整合SocketLog用于支持遠程調試
命令行訪問支持
REST支持
引導文件支持
方便的自動生成定義
真正惰性加載
分布式環境支持
更多的社交類庫
ThinkPHP5的運行環境要求PHP5.4以上,目前處于開發測試階段,不排除正式發布之前有所調整, 請謹慎用于實際項目 _。
詳細開發文檔參考 ThinkPHP5開發手冊
mvc和MVP的區別
正則表達