1、判斷代碼輸出php
$str1 = null; $str2 = false; echo $str1==$str2 ? '相等' : '不相等'; $str3 = ''; $str4 = 0; echo $str3==$str4 ? '相等' : '不相等'; $str5 = 0; $str6 = '0'; echo $str5===$str6 ? '相等' : '不相等';
輸出:
相等
相等
不相等算法
$a1 = null; $a2 = false; $a3 = 0; $a4 = ''; $a5 = '0'; $a6 = 'null'; $a7 = array(); $a8 = array(array()); echo empty($a1) ? 'true' : 'false'; echo empty($a2) ? 'true' : 'false'; echo empty($a3) ? 'true' : 'false'; echo empty($a4) ? 'true' : 'false'; echo empty($a5) ? 'true' : 'false'; echo empty($a6) ? 'true' : 'false'; echo empty($a7) ? 'true' : 'false'; echo empty($a8) ? 'true' : 'false';
輸出: true true true true true false true falsejson
$test = 'aaaaaa'; $abc = & $test; unset($test); echo $abc;
輸出: 'aaaaa'數組
$count = 5; function get_count(){ static $count = 0; return $count++; } echo $count; ++$count; echo get_count(); echo get_count();
輸出 5 0 1安全
php 對bool 轉換 字符串的處理cookie
$a=false; echo $a; // '' echo $a.'';// '' echo (string)$a; // '' echo json_encode($a); // false $b=true; echo $b; // 1 echo $b.'';// 1 echo (string)$b; // 1 echo json_encode($b); // true if(''){ echo "is ok"; }else{ echo "no ok"; } // false 輸出 no ok if('false'){ echo "is ok"; }else{ echo "no ok"; } // true 輸出 no ok
php 對象引用賦值ui
<?php $a="Hello"; // $a 分配內存地址 0x00001,並賦值 Hello 。 $b=&$a; // $b 分配內存地址 0x00002,並將該地址指向 0x00001 。 $b="word"; // 爲 0x00001 地址賦值 word echo $a,$b; // 輸出 word ,word /*******/ $a="Hello"; // $a 分配內存地址 0x00001,並賦值 Hello 。 $b=&$a; // $b 分配內存地址 0x00002,並將該地址指向 0x00001 。 unset($b); // 解除 $b 分配的內存地址 0x00002 與 0x00001 的 綁定關係 $b="word"; // 爲 0x00002 地址賦值 word echo $a,$b; // 輸出 Hello word ?>
2、算法編碼
一、冒泡排序spa
$arr=[1,6,3,8,9,12,6]; $len=count($arr); for($i=0;$i<$len;$i++) { for($j=$i+1;$j<$len;$j++) { if($arr[$i]>$arr[$j]) { $tmp=$arr[$i]; $arr[$i]=$arr[$j]; $arr[$j]=$tmp; } } } var_dump($arr);
二、二分查找code
二分查找須要查找的集合對象爲有序隊列。
function binarySearch(Array $arr,$key) { $len=count($arr); if($len==0) return false; $begin=0; $end=$len-1; //若是查找的值爲集合首元素則$begin,$end將= while ( $begin <= $end) { $mid=floor(($begin+$end)/2); if($arr[$mid]==$key){ return $arr[$mid]; } if($arr[$mid]<$key){ $begin=$mid +1; } if($arr[$mid]>$key){ $end=$mid-1; } } return false; } $arr=[3,4,6,7,8,10,11,55,67]; $result=binarySearch($arr,4); var_dump($result);
三、 分割字符串
$str= 'abcdefg'; // 讀取字符串中指定位置字符 echo $str[2];// c // explode 第一個參數爲空則 Warning: explode(): Empty delimiter // 將字符串轉換成字符數組 $arr=[]; for ($i=0; $i <strlen($str) ; $i++) { $arr[$i]=$str[$i]; } foreach ($arr as $key=>$value) { echo $key.':'.$value.' '; }
四、快速排序法:
有沒有既不浪費空間又能夠快一點的排序算法呢?那就是「快速排序」啦!光聽這個名字是否是就以爲很高端呢。
參考:
http://developer.51cto.com/art/201403/430986.htm
function quickSort(&$arr,$begin,$end) { if($begin>=$end) return; $k=$arr[$begin]; $x=$begin; $y=$end; while ($x<$y) { while ($x<$y && $arr[$y]>=$k) { $y--; } while ($x<$y && $arr[$x]<=$k) { $x++; } if ( $x<$y ){ $temp=$arr[$x]; $arr[$x]=$arr[$y]; $arr[$y]=$temp; // $arr[$x]; } } $arr[$begin]=$arr[$x]; $arr[$x]=$k; quickSort($arr,$begin,$x-1); quickSort($arr,$x+1,$end); } $arr= Array(3,7,5,4,6,8,2,9,13); quickSort($arr,0,sizeof($arr)-1); print_r($arr); /* Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 9 [8] => 13 ) */
4、開發常見問題
一、XSS 跟 CSRF 攻擊
XSS:跨站腳本(Cross-site scripting)
經過在提交表單中注入腳本,致使站點受影響。
解決方案:
若是隻須要純文本內容,則在內容展現的時候對內容進行HTML編碼,解決注入腳本問題。
若是提交的內容自己就是HTML結構,此時安全的作法是 根據提交的內容從新生成HTML樹,而後創建HTML接口白名單,過濾掉非法HTML元素,從新生成HTML內容。
CSRF:跨站請求僞造(Cross-site request forgery) 獲取用戶的cookie信息,模擬用戶進行業務數據操做。 理論上是沒法杜絕的,只能根據場景去判斷。好比操做金額的時候須要用戶再次輸入支付密碼等相關信息。