php +0

php 數字加上一個0會變成?

今天學習一組程式碼,一直納悶著為何sairwolf要加一個數字0,有甚麼用處呢?
原來,加數字零之後,取出的兩位數會變成一位數,當若是要取出兩位數,而需要是個位數時。
如:取出數是09,但是我要9時,加個數字0就會變成9。但是你會說:那不就取1位就好,但是常常是也需要2位數的。
<?php
$or_num="20045";
$count_num=substr($or_num,2,2);
echo $count_num."<br>";
$count_num +=0;
echo $count_num."<br>";

?>

結果

04
4

PHP isset() empty() is_null() 的區別

它們的區別   出處

三個方法都是來判斷是否是空值或有沒有宣告變數的方法,比較容易混淆的是isset(),empty()。

  • isset()檢查變數是否存在
  • empty()檢查變數的值是否為空
  • is_null()檢查變數是否為null
gettype()isset()empty()is_null()
$x is undefinedNULLFALSETRUETRUE
$x = null;NULLFALSETRUETRUE
$x = 0;integerTRUETRUEFALSE
$x = “0”;stringTRUETRUEFALSE
$x = 1;intergerTRUEFALSEFALSE
$x = “”;stringTRUETRUEFALSE
$x = “PHP”;stringTRUEFALSEFALSE

intval

intval  函數

(PHP 4, PHP 5, PHP 7, PHP 8)

intval — 獲取變數的整数值

說明

intval(mixed $value, int $base = 10): int

通过使用指定的进制 base 转换(默认是十进制),返回变量 value 的 int 数值。 intval() 不能用于 object,否则会产生 E_WARNING 錯誤並返回 1。

範例

<?php
echo intval(42);                      // 42
echo intval(4.2);                     // 4
echo intval('42');                    // 42
echo intval('+42');                   // 42
echo intval('-42');                   // -42
echo intval(042);                     // 34
echo intval('042');                   // 42
echo intval(1e10);                    // 10000000000
echo intval('1e10');                  // 10000000000
echo intval(0x1A);                    // 26
echo intval('0x1A');                  // 0
echo intval('0x1A', 0);               // 26
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // -4275113695319687168
echo intval('420000000000000000000'); // 9223372036854775807
echo intval(42, 8);                   // 42
echo intval('42', 8);                 // 34
echo intval(array());                 // 0
echo intval(array('foo', 'bar'));     // 1
echo intval(false);                   // 0
echo intval(true);                    // 1
?>

ord

ord   函數

(PHP 4, PHP 5, PHP 7, PHP 8)

ord — 轉換字符串第一个字节为 0-255 之间的值

说明

ord(string $character): int

解析 character 二进制值第一个字节为 0 到 255 范围的无符号整型类型。

如果字符串是 ASCII、 ISO-8859、Windows 1252之类单字节编码,就等于返回该字符在字符集编码表中的位置。 但请注意,本函数不会去检测字符串的编码,尤其是不会识别类似 UTF-8 或 UTF-16 这种多字节字符的 Unicode 代码点(code point)。

该函数是 chr() 的互补函数。

範例:

<?php
declare(encoding='UTF-8');
$str = "?";
for ( $pos=0; $pos < strlen($str); $pos ++ ) {
 $byte = substr($str, $pos);
 echo 'Byte ' . $pos . ' of $str has value ' . ord($byte) . PHP_EOL;
}
?>

輸出:

Byte 0 of $str has value 240
Byte 1 of $str has value 159
Byte 2 of $str has value 144
Byte 3 of $str has value 152

PHP_正規表達式

正規表達式
開頭結尾:
^:比對字串的開始位置
$:比對字串的結束位置

指定匹配次數

*:比對前一個字元0次或以上
+:比對前一個字元1次或以上
?:比對前一個字元0次或1次以上
{數字}:比對前一個字母N次(n是整數數字),ex:/{3}/,意思比對字串aaapple,中的aaa3次,可是無法比對aa,因為已經指定3次,所以只能3次。
{,數字}:比對N次以下(N是整數)
{數字,}:比對前一個字母"至少"N次(N是整數數字),ex:/{3,}/,意思可比對aaa aaaapple,中的aaaa aaa3次,只能比對該字母3次或以上。
{數字1,數字2}:比對前字母N~M次(N跟M是整數),ex:/{3,4}/,意思可比對aaa aa aaaa apple,中的aaa aaaa符合,aa apple都不符合,只能比對a 3到4次,其他多的或少的,都無法比對。

特殊符號:

\:反斜線,避開特殊字元
.:比對任何次元

特定字元:

[字母或數字]:比對括號中出現的"任何"字元,只要一個不符合就false。
    ex:[A-Z]比對大寫英文字母A-Z,反之小寫[a-z]則是比對小寫字母,[0-9]比對數字。
[^字母或數字]:比對括號內以外的字元,也就是不要比括號裡出現的字母或數字。
    ex:/[^le],表示字串中apple中,不要比對le,指比對a,p,p
/字母/:比對字串內是否含有該字母。
    ex:/m/,就是比對該字串是否含有m字母。
/字母A字母B/:比對A或B。ex:/ab/,比對字串內是否有a或b。

其他:

\b:比對英文邊界,如空格
\d:比對任一數字,如[0-9]
\D:比對任何非數字,如[^0-9]
\w:比對數字字母跟底線,如[A-Za-z0-9_]
\W:比對非數字字母跟底線,[^A-Za-Z0-9_]
\s:比對任一空白字元
\S:比對任一非空白次元
\n:比對換行符號,是否換行
\t:比對定位字元

範例:

[^A-Za-z0-9]          代表接受英文大小寫及數字以外的字串

[0-9A-Za-z]           代表英文大小寫及數字的字串

[^0-9]          代表數字以外的字串

[0-9]          代表數字的字串

[A-Za-z]            代表英文大小寫的字串

[A-Za-z0-9_]           代表大小寫英數及符號的字串

[^A-Z]           代表大寫英文字母以外的字串

[A-Z]          代表大寫英文字母的字串

{3,7}           代表三個至七個字元的字串

{5,}          代表五個以上的字串

^[A-C]{3}            開頭是大寫的英文字母且在A-C間,且有三個字元的字串    20241015

PHP foreach

第一種為 key 從 0 開始依序遞增的陣列,這時只需取得 value 即可

 foreach (array_name as $value)

foreach ($a as $i){  
     $sum +=$i;
}
echo "1+2+3+.....+99+100=".$sum."<br/>";
  • 第二種則是任意的 key-value 組合,此時需要兩個變數 $key 為 key 的值, $value 為 value 的值

 foreach (array_name as $key => $value)

$b = array(
       "one" => 1,
       "two" => 2,
       "three" => 3,
       "four" => 4
         );

foreach ($b as $key => $value){
    echo "{$key}: => {$value} <br/>"; 
}

strtok

strtok 函數

(PHP 4, PHP 5, PHP 7, PHP 8)

strtok — 标记分割字符串

说明

strtok(string $string, string $token): string|false
strtok(string $token): string|false

strtok() 将字符串 string 分割为若干子字符串,每个子字符串以 token 中的字符分割。这也就意味着,如果有个字符串是 “This is an example string”, 你可以使用空格字符作为 token,将这句话分割成独立的单词。

注意,仅第一次调用 strtok 函数时才使用 string 参数。 随后每次调用 strtok 都将只使用 token 参数,因为它会记住它在当前字符串中的位置。 如果要重新开始分割一个新的字符串,你需要再次使用 string 参数来调用 strtok 函数来对其进行初始化。 注意,可以在 token 参数中使用多个字符。字符串将被 token 参数中任何一个字符分割。

参数

string
被分成若干子字符串的原始字符串。
token
分割 string 时使用的分界字符。

範例

<?php
$string = "This is\tan example\nstring";
/* 使用制表符和换行符作为分界符 */
$tok = strtok($string, " \n\t");

while ($tok !== false) {
    echo "Word=$tok<br />";
    $tok = strtok(" \n\t");
}
?>
結果:
Word=This
Word=is
Word=an
Word=example
Word=string

explode

explode 函數

(PHP 4, PHP 5, PHP 7, PHP 8)

explode — 使用一个字符串分割另一个字符串

使用

explode(string $separator, string $string, int $limit = PHP_INT_MAX): array

參數

separator
边界上的分隔字符。
string
输入的字符串。
limit
如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。
如果 limit 是 0,则会被当做 1。

範例

<?php
// 示例 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// 示例 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *

?>
結果
範例一
piece1piece2
範例二
foo*

fgets

fgets 函數

(PHP 4, PHP 5, PHP 7, PHP 8)
fgets — 從文件指針中讀取一行

fgets(resource $stream, ?int $length = null): string|false

範例  逐行讀取文件

参数

stream
文件指针必须是有效的,必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

length
从 handle 指向的文件中读取一行并返回长度最多为 length – 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length – 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

<?php
$fp = @fopen("/tmp/inputfile.txt", "r");
if ($fp) {
    while (($buffer = fgets($fp, 4096)) !== false) {
        echo $buffer;
    }
    if (!feof($fp)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($fp);
}
?>

fopen

fopen  函數

(PHP 4, PHP 5, PHP 7, PHP 8)
fopen — 打開文件或者 URL

fopen(
    string $filename,
    string $mode,
    bool $use_include_path = false,
    ?resource $context = null
): resource|false

mode

mode 參数指定了所讀取的類型。可以是以下:
fopen() 中 mode 的可能值列表
mode 說明
‘r’ 只讀方式打開,將文件指向文件頭。
‘r+’ 讀寫方式打開,將文件指向文件頭。
‘w’ 寫入方式打開,將文件指向文件頭並将文件大小截为零。如果文件不存在則創建它。
‘w+’ 讀寫方式打開,否則視為同 ‘w’。

<?php
$handle = fopen("c:\\folder\\resource.txt", "r");
?>