『壹』 php中sprintf怎麼用與printf,vprintf各有什麼區別和聯系
int fprintf()(FILE *stream, const char *format, ...)
fprintf()轉化並格式化地寫入輸出流。返回值是寫入的字元個數;或者為負數,如果有錯誤發生。
int printf()(const char *format, ...)
printf(...)與fprintf(stdout, ...)等價。
int sprintf(char *s, const char *format, ...)
sprintf與printf相同,只是輸出被寫入字元串s,並且以』\0』結束。s必須足夠大以容納結果。函數返回不包括』\0』的字元數。
int vprintf(const char *format, va_list arg)
函數vprintf與printf等價,只是用arg替換了變數參數列表,arg由va_start宏初始化,並且va_arg可能會調用它。
int putchar(int c)
putchar(c)與putc(c,stdout)等價。
『貳』 PHP怎麼定義保留2位小數的變數
在php中要保留兩位小數的方法有很多種辦法,有如:printf,substr,number_format,round等等方法
方法一
sprintf()函數 ,sprintf() 函數把格式化的字元串寫寫入一個變數中
<?php
$number=123;
$txt=sprintf("%f",$number);
echo$txt;
?>
輸出:
123.000000
方法二substr()函數
$num=123213.666666;
echosprintf("%.2f",substr(sprintf("%.3f",$num),0,-2));
方法三 number_format()函數
$number=1234.5678;
$nombre_format_francais=number_format($number,2,',','');//1234,57
$english_format_number=number_format($number,2,'.','');//1234.57(我一般用這個)
方法四 round 函數,round() 函數對浮點數進行四捨五入。
<?php
echo(round(0.60));
echo(round(0.50));
echo(round(0.49));
echo(round(-4.40));
echo(round(-4.60));
?>
輸出:
1
1
0
-4
-5
如果要保留小數,後來參數根保留小數位數即可。
$number=1234.5678;
echoround($number,2);//1234.57
『叄』 PHP中的文件系統函數(一)
從這篇文章開始,我們將學習一系列的 PHP 文件系統相關函數。其實這些函數中,有很多都是我們經常用到的,大家並不需要刻意地去記住它們,只要知道有這么個東西,在使用的時候記得來查文檔就可以了。
文件路徑相關的函數往往在一些框架中會比較常見,而且多會配合 __FILE__ 、 __DIR__ 之類的魔術常量使用。
basename() 函數是獲得路徑中的文件名,它有兩個參數,第一個是文件的路徑,第二個是過濾掉的內容,比如第一條測試語句我們過濾掉文件的後綴名。
dirname() 返回的是路徑中的路徑部分,也就是不包含文件名的那部分內容,和 basename() 正好是相反的功能。
pathinfo() 函數用於以數組的形式返迴路徑中的信息,從結果來看,我們可以看到文件的 dirname 部分,basename 部分,以及文件的擴展名 extension 和不包含擴展名的 filename 內容。
realpath() 返回的是規范化的絕對路徑名,它擴展所有的符號連接並且處理輸入的路徑中的 ./ 、 ../ 以及多餘的 / ,返回的內容是標准規范的絕對路徑。
接下來,我們學習一些修改文件相關屬性的函數,主要就是在 Linux 系統環境中的文件許可權信息的操作。
當然,首先我們得創建一個文件。和 Linux 中的命令是非常類似的。
touch() 函數除了給出要創建的文件名之外,還有兩個可選參數可以指定文件的創建時間及訪問時間,不給參數的話默認就是當前時間。這個文件名可以是相對或絕對路徑中有許可權的目錄,並在該目錄下創建一個空的文件。
通過 fileowner() 函數,我們可以獲得某個文件所屬的用戶,默認情況下我們的用戶是當前運行 PHP 腳本的用戶,也就是系統目前的登錄用戶。在這里,我們使用 chown() 函數,將用戶改為 www 用戶。clearstatcache() 是用於清理文件系統的緩存信息,如果不清理一下的話,fileowner() 返回的依然還是之前的用戶信息。
同理,使用 filegroup() 函數獲得文件的屬組信息,chgrp() 用於修改文件的屬組。fileperms() 用於返迴文件的許可權信息,它返回的是數字模式的文件訪問許可權,這里我們使用 sprintf() 格式化結果後獲得我們常用的 Linux 系統許可權格式。chmod() 函數用於修改文件的許可權,它的許可權參數是三個 8 進制數據組成的數字,也就是代表 Linux 系統中的 1 、2 、4 和它們的組合,所以我們需要在前面再加上一個 0 用於確保操作能夠正常執行。關於系統文件許可權的知識大家需要認真學習 Linux 系統中相關的內容。
注意,上述函數如果在命令行中運行失敗,大部分原因是沒有許可權,可以使用 sudo 進行測試。在 fastcgi 中運行時,就更加需要注意許可權問題,僅在我們伺服器可以操作的目錄中進行安全的文件許可權修改。
stat() 函數可以獲取到指定文件的所有屬性信息,在這里我們可以看到文件的 uid 、 gid 、 ctime 、 mtime 等信息。
在 Linux 系統中,有軟連接和硬連接的相關知識。其實軟連接就像是 Windows 中的快捷方式,而硬連接相關於復制了一份數據。在 PHP 中,也為我們提供了創建軟硬連接以及相關的一些操作。
使用 link() 函數創建的就是一個指定文件的硬連接文件,而使用 symlink() 創建的則是一個軟連接文件。相對來說,我們使用軟連接的場景會更多一些。lstat() 就和 stat() 函數的功能一樣,查看文件的各種屬性信息,不過 lstat() 函數針對的是軟硬連接文件。
同樣地,我們也可以修改軟硬連接的用戶和用戶組信息,不過它們的信息不能通過 fileowner() 或 filegroup() 查看。因為它們是連接文件,本身還是和原始文件綁定在一起的,使用 fileowner() 這類的函數查看到的依然是原始文件的信息。我們可以在系統環境中使用 ls -l 查看連接文件的用戶和用戶組信息是否修改成功。
今天的內容比較簡單,而且修改許可權的操作也並不常用。不過對於系統安全來,它們還是非常有用的,比如對於上傳來說,我們要預防上傳可執行文件的話,就可以通過修改文件的許可權來讓文件無法直接運行,從而起到安全保護的作用。另外,目錄路徑相關的操作也是一些框架的基礎,幾乎所有框架的入口或者說是 Composer 的入口,都會見到 dirname() 以及 basename() 之類函數的身影。
測試代碼:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/6.PHP中的文件系統函數(一).php
參考文檔:
https://www.php.net/manual/zh/ref.filesystem.php
『肆』 PHP如何格式化數字
PHP格式化數字的函數是number_format
我建議你去下載一個PHP的使用手冊,或者看網上的在線手冊也行。
http://www.itlearner.com/code/php/
關於他的用法如下:
語法: string number_format(float number, int [decimals], string [dec_point], string [thousands_sep]);
返回值: 字元串
函數種類: 數學運算
內容說明
本函數用來將浮點參數 number 格式化。若沒加參數 decimals 則返回的字元串只要整數部份,加了此參數才依參數指定的小數點位數返回。參數 dec_point 表示小數點的表示方式方法,默認值是 ".",若需要轉換成其它的小數點就可以在這個參數改掉。參數 thousands_sep 為整數部份每三位的分隔符號,默認值是 ","。本函數最特別的地方就是參數數目,最少要有一個,也就是欲格式化的字元串;也可以有二個或者四個參數,但不能用三個參數。治募�注意的是指定小數點的位數之後的數字直接舍棄,沒有四捨五入的情形。
使用範例
<?
$short_pi = "3.14159";
$my_pi = number_format($short_pi, 2);
echo $my_pi."\n"; // 3.14
$foo = 850017.9021;
$new_foo = number_format($foo, 3, ".", " ");
echo $new_foo."\n"; // 850 017.902
?>
『伍』 php中整形轉換為浮點型,並精確的小數點後兩位
PHP 中sprintf函數可以將整數格式化為浮點格式。比如格式化參數:%nf;其中,n 表示小數點後的位數。比如:
<?php
$num=9.8;
$res=sprintf("%.2f", $num);
//輸出:9.80
?>
『陸』 如何使用PHP函數sprintf將字元串格式化
如果有一個字元串$str = '99.9';,怎麼樣使這個字元串變成99.90呢?
我們需要用到PHP的格式化字元串函數sprintf()
函數說明:sprintf(格式, 要轉化的字元串)
返回:格式化好的字元串
例子:
$str = '99.9';
$result = sprintf('%01.2f', $str);
echo $result;//結果顯示99.90
解釋下,上面例子中的格式
這個 %01.2f 是什麼意思呢?
1、這個 % 符號是開始的意思,寫在最前面表示指定格式開始了。 也就是 "起始字元", 直到出現 "轉換字元" 為止,就算格式終止。
2、跟在 % 符號後面的是 0, 是 "填空字元" ,表示如果位置空著就用0來填滿。
3、在 0 後面的是1,這個 1 是規定整個所有的字元串佔位要有1位以上(小數點也算一個佔位)。
如果把 1 改成 6,則 $result的值將為 099.90
因為,在小數點後面必須是兩位,99.90一共5個佔位,現在需要6個佔位,所以用0來填滿。
4、在 %01 後面的 .2 (點2) 就很好理解了,它的意思是,小數點後的數字必須佔2位。 如果這時候,$str 的值為9.234,則 $result的值將為9.23.
為什麼4 不見了呢? 因為在小數點後面,按照上面的規定,必須且僅能佔2位。 可是 $str 的值中,小數點後面佔了3位,所以,尾數4被去掉了,只剩下 23。
5、最後,以 f "轉換字元" 結尾。
『柒』 php,sprintf函數輸出字元串問題
你運行一下這個代碼,輸出內容是:
[many monke]
printf的第一個參數是輸出內容,後面的參數對應第一個參數裡面的%*。例如本例代碼,第一個參數是[%s],表示輸出第二個參數,作為字元串。%10.10s裡面的10.10表示輸出佔10個字元寬度、從字元串左邊開始、最多隻輸出10個字元,輸出的內容靠右、如果不夠寬度(例如10.8s輸出[ many mon])則空格在左邊。
『捌』 PHP echo,print,printf,sprintf函數的區別和使用
printf函數與sprintf不同之處有: (1)函數的聲明不同 int printf(const char *format [, argument]);int sprintf(char *buffer, const char *format [, argument] );sprintf比printf多一個參數buffer,這個參數的作用見(2)的描述。 (
『玖』 php 中的字元串中的%s和%d是什麼意思
親,字元串中的%s和%d代表你一定格式的可替換佔位符。
%s:代表字元串
%d:代表數字
例如:
echo sprintf('這是一個字元串:%s,這是一個數字:%d', '字元串', 123);
這個會輸出:
這是一個字元串:字元串,這是一個數字:123
希望可以幫到你喲!~~有不懂的可以繼續追問,或私信,或到boboidea-本人博客留言!~