이 글은 주로 PHP의 파일 연산과 알고리즘을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.
파일 조작
1. 파일 확장자를 얻는 데 5가지 이상의 방법을 사용하세요
요구 사항: dir/upload.image.jpg, .jpg 또는 jpg
<?php /** * 五种方式获取指定路径的文件扩展名 */ $str = "dir/upload.image.jpg"; function one ($str) { $arr = explode('.', $str); $count = count($arr); return $arr[$count - 1]; } function two ($str) { $len = strlen($str); for ($i = $len - 1, $name = ''; $str[$i] != '.'; $i --) { $name .= $str[$i]; } $name = strrev($name); return $name; } function three($str) { $path = pathinfo($str); return $path['extension']; } function four($str) { $arr = explode('.', $str); return array_pop($arr); } function five($str) { $start = strrpos($str, '.'); return substr($str, $start + 1); } echo one($str); echo "<br>"; echo two($str); echo "<br>"; echo three($str); echo "<br>"; echo four($str); echo "<br>"; echo five($str); echo "<br>";
2를 찾아 계산하세요. 두 파일의 상대 경로입니다. 예를 들어, $a="/a/b/c/d/e.php"; $b="/a/b/12/34/c.php", A에 대한 B의 상대 경로는 무엇입니까?
이 질문은 첫 번째 공개 노드를 찾는 질문으로 볼 수 있습니다. 인터넷에 유통되는 대부분의 코드는 잘못되었으며 잘 생각되지 않았습니다. 물론 이것을 표현하기 위해 "../"를 사용합니다. 쓸모가 없습니다.". /"
<?php /** * 求$b相对于$a的相对路径 * @param string $a * @param string $b * @return string */ function getRelativePath ($a, $b) { $patha = explode('/', $a); $pathb = explode('/', $b); $counta = count($patha) - 1; $countb = count($pathb) - 1; $path = "../"; if ($countb > $counta) { while ($countb > $counta) { $path .= "../"; $countb --; } } // 寻找第一个公共结点 for ($i = $countb - 1; $i >= 0;) { if ($patha[$i] != $pathb[$i]) { $path .= "../"; $i --; } else { // 判断是否为真正的第一个公共结点,防止出现子目录重名情况 for ($j = $i - 1, $flag = 1; $j >= 0; $j --) { if ($patha[$j] == $pathb[$j]) { continue; } else { $flag = 0; break; } } if ($flag) break; else $i ++; } } for ($i += 1; $i <= $counta; $i ++) { $path .= $patha[$i] . "/"; } return $path; } $a = "/a/c/d/e.php"; $b = "/a/c.php"; $path = getRelativePath($a, $b); echo $path;
Algorithm
1. PHP를 사용하여 버블 정렬 및 퀵 정렬을 설명하고 객체는 배열일 수 있습니다
<?php /** * 冒泡排序算法实现(从小到大) */ function maopaoSort (&$array) { $count = count($array); for ($i = 0; $i < $count - 1; $i ++) { for ($j = 0; $j < $count - $i - 1; $j ++) { if ($array[$j] > $array[$j + 1]) { $tmp = $array[$j]; $array[$j] = $array[$j + 1]; $array[$j + 1] = $tmp; } } } } /** * 快速排序 */ function pivotParation (&$array, $start, $end) { $stand = $array[$start]; while ($start < $end) { while ($start < $end && $array[$end] >= $stand) { $end --; } if ($start < $end) { $array[$start ++] = $array[$end]; } while ($start < $end && $array[$start] <= $stand) { $start ++; } if ($start < $end) { $array[$end --] = $array[$start]; } } $array[$start] = $stand; return $start; } function quickSort (&$array, $begin, $end) { if ($begin < $end) { $pivot = pivotParation($array, $begin, $end); quickSort($array, $begin, $pivot - 1); quickSort($array, $pivot + 1, $end); } } $arr = array( 5, 1, 3, 2, 19, 11, 25, 12, 100, 10000, 12 ); // 冒泡排序 maopaoSort($arr); print_r($arr); echo "<br>"; // 快速排序 $count = count($arr); quickSort($arr, 0, $count - 1); print_r($arr);
2 PHP를 사용하여 순차 검색 및 이진 검색을 설명합니다
<?php /** * 顺序查找 */ function seqSearch ($arr, $needle) { for ($i = 0, $len = count($arr); $i < $len; $i ++) { if ($arr[$i] == $needle) { return $i; } } return - 1; } /** * 二分查找 */ function midSearch ($arr, $start, $end, $needle) { while ($start <= $end) { $mid = (int)($start + ($end - $start) / 2); // 防止超出整数表示范围 if ($arr[$mid] == $needle) { return $mid; } else if ($arr[$mid] > $needle) { $end = $mid - 1; } else { $start = $mid + 1; } } return - 1; } $arr = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ); $needle = 5; echo seqSearch($arr, $needle); echo "<br>"; echo midSearch($arr, 0, count($arr) - 1, $needle);
3. 2차원 작성 배열 정렬 알고리즘 함수는 범용적이며 PHP 내장 함수를 호출할 수 있습니다
/** * Description:获取中枢点的位置 * * @param array $array * @param int $left * @param int $right * @param string $field * @return int */ function fetchArrayPivot (&$array, $left, $right, $field) { // 基准定义 $stand = $array[$left]; // 遍历数组 while ($left < $right) { while ($left < $right && $array[$right][$field] >= $stand[$field]) { $right --; } if ($left < $right) { $array[$left ++] = $array[$right]; } while ($left < $right && $array[$left][$field] <= $stand[$field]) { $left ++; } if ($left < $right) { $array[$right --] = $array[$left]; } } // 获取中枢点位置 $array[$left] = $stand; return $left; } /** * Description:快速排序主程序 * * @param array $array * @param int $begin * @param int $end * @param string $field */ function quickSort (&$array, $begin, $end, $field) { // 变量定义 $pivot = null; if ($begin < $end) { $pivot = fetchArrayPivot($array, $begin, $end, $field); quickSort($array, $begin, $pivot - 1, $field); quickSort($array, $pivot + 1, $end, $field); } }
요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. .
관련 추천:
PHP에서 WeChat 사용자 정의 메뉴를 생성하는 방법에 대한 자세한 설명
PHP에서 DS 확장의 데이터 구조에 대한 자세한 설명
통신 데이터 캡슐화 클래스의 방법에 대한 자세한 설명 PHP 공통 작업 클래스
위 내용은 PHP 파일 작업 및 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!