php好玩的原始碼 PHP 經典有趣的演算法

2021-10-17 06:06:56 字數 1498 閱讀 1055

原文:

1、一群猴子排成一圈,按1,2,…,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最後只剩下乙隻猴子為止,那只猴子就叫做大王。要求程式設計模擬此過程,輸入m、n, 輸出最後那個大王的編號。

function king($n, $m) else else if($i==20)else else elseif($a[$middle]<=$x ){

$lower=$middle+1;

return '在區間'.$a[$high].'到'.$a[$lower];

$array = ['1','50','100','150','200','250','300'];

$a = '120';

echo binsearch($a,$array);

12、寫乙個函式,算出兩個檔案的相對路徑,如a=′/a/b/c/d/e.php′;a=′/a/b/c/d/e.php′;b='/a/b/12/34/c.php';計算出b相對於b相對於a的相對路徑應該是../../c/d

function releative_path($path1,$path2){

$arr1 = explode("/",dirname($path1));

$arr2 = explode("/",dirname($path2));

for ($i=0,$len = count($arr2); $i < $len; $i++) {

if ($arr1[$i]!=$arr2[$i]) {

break;

echo $i.'

';// 不在同乙個根目錄下

if ($i==1) {

$return_path = array();

// 在同乙個根目錄下

if ($i != 1 && $i < $len) {

$return_path = array_fill(0, $len - $i,"..");

// 在同乙個目錄下

if ($i == $len) {

$return_path = array('./');

$return_path = array_merge($return_path,array_slice($arr1,$i));

return implode('/',$return_path);

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

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

$c = '/e/b/c/d/f.php';

$d = '/a/b/c/d/g.php';

echo releative_path($a,$b);//結果是../../c/d

echo "

";echo releative_path($a,$c);//結果是a/b/c/d

echo "

";echo releative_path($a,$d);//結果是./

echo "

";

php原始碼探索四 php擴充套件原始碼分析

1 最重要的entry 比如exif裡的 zend module entry exif module entry struct zend module entry 引數 描述 size,zend api,zend debug and zts 通常使用standard module header來填充...

php 原始碼結構

目錄結構 1.build 和編譯有關的目錄。2.ext 擴充套件庫 例如 mysql zlib iconv 等我們熟悉的擴充套件庫。3.main 主目錄。4.sapi 和各種伺服器的介面呼叫,例如apache iis等,也包含一般的fastcgi cgi等。5.win32 和 windows 下編譯...

PHP原始碼安裝

1.安裝libiconv tar zxvf libiconv 1.13.1.tar.gz cd libiconv 1.13.1 configure prefix usr local libiconv make make install 2.libmcrypt安裝 tar zxvf libmcrypt...