PHP字串長度找子字串與取代字串的常用函數

PHP在字串的操作上,有非常多的相關函數可以使用,我們在這裡只介紹經常會使用到的字串操作函數。像是如何取得字串的長度、在某一個字裏面尋找子字串首次出現的位置、以及字串的取代函數...等等。這些都是在編寫程式的時候,頻繁被程式設計師使用到的基礎函數。 取得字串長度 <?...

2018年1月14日 星期日

PHP日期Date的常用函數

在PHP的程式語言裡,早期就是採用Date函數來處理日期的產生、格式化以及字串轉換成日期型態。
  1. 可以利用time()或mktime()獲得當前的時間戳記
  2. 或者使用date()來針對特定日期進行格式化
  3. 若要把字串轉換成為日期就要透過strtotime()函數
以下為簡單的指令操作範例:
<?php
// 取得目前時間的timestamp
$now = time();
$now2 = mktime();

// 對現在的日期進行格式化
echo date("Y-m-d H:i:s", $now);

// 將字串轉換成日期
echo strtotime("2018-01-02");
?>

如果要採行新的作法,也可以考慮改用DateTime日期類別,PHP 5.2.x版本以後開始支援。

PHP日期DateTime的常用函數

從PHP 5.2.x開始以後, 我們可以使用DateTime類別來產生某特定日期、日期格式化與日期的加減操作, 過去習慣利用Date函數來幫我們完成這些任務。

產生今天的日期函數

<?php
// 取得目前時間的timestamp
$now = time();
$now2 = mktime();
?>

透過DateTime產生日期和日期格式化

<?php
// 建立DateTime型別的日期
//$date = DateTime("2018-01-02");
$date = date_create("2018-01-02");

// 針對DateTime型別的日期進行格式化
$date_ft = date_format($date,"Y-m-d");
echo $date_ft;
?>

運用DateTime進行日期加、減運算

<?php
// 某特定日期增加6天
$date_m6 = date_modify($date,"+6 days");
// 某特定日期減少3天
$date_m3 = date_modify($date,"-3 days");
?>
我們在透過DateTime進行日期、時間的算術運算操作時,若要將剛才生成的DateTime實體物件打印出來可以使用print_r($date_m3)來觀察該物件內存放了那些資料,要不然必須先把日期物件格式化為字串,才能順利輸出到電腦螢幕畫面上顯示。

PHP常用輸出指令

在PHP程式語言的世界裡,若要將程式執行的結果輸出到電腦螢幕上,就需要以下6個經常使用的輸出資料串流的指令。由於這些指令除了可以讓我們除錯程式碼,也可以讓我們預覽準備要傳送到列表機列印的欄位、資料、格式正確與否。

  • echo  輸出一個字串或多個字串
  • print  輸出一個字串
  • print_r  列印一個陣列
  • var_dump  輸出一個變數的相關資訊
  • die  輸出結果並且終止程式
  • exit 當參數為0時,等同die的作用

使用範例說明:

<?php
// 輸出字串
echo "你好嗎?";
print "I am fine.";

// 輸出陣列
print_r(array('apple','android'));

// 輸出變數型別、長度等明細資訊
$str = "開心果";
var_dump($str);

// 輸出變數且終止程式
$str2 = "Happy Birthday";
die($str2);

// 也可以使用exit(0)終止程式
echo $str2;
exit(0);
?>

PHP輸出格式化字串

想要讓字串可以進行格式化的編排、組合,並且能夠傳回字串變數、輸出到螢幕或輸出到文字檔案裏面。
一定要記得使用以下4種格式化字串的指令操作方式:

  • printf  輸出格式化的字串
  • sprintf  回傳格式化的字串
  • sscanf  將字串輸入格式化,回傳對映的變數
  • fprintf  將格式化字串寫入文字檔案

使用範例說明:

<?php
// 列印格式化的字串到電腦螢幕上
$name = "小明";
$number = 6;
$dollar = 177.6;
printf("%s有%d張一塊美鈔,折合新台幣%f元", $name, $number, $dollar);

// 組合格式化的字串
$combine_str = sprintf("%s有%d張一塊美鈔,折合新台幣%f元", $name, $number, $dollar);
echo $combine_str;

// 棓析格式化字串為相映數位
$today = "2017-01-14";
list($year, $month, $day) = sscanf($today, "%d-%d-%d");
echo $year. $month. $day;

// 將19.88寫入balance.txt檔案內
$fp = fopen('balance.txt', 'w');
$revenue = 19.8756;
fprintf($fp, '%01.2f', $revenue);
?>

2018年1月6日 星期六

MySQL資料型態與JAVA資料型態的轉換

若要將MySQL data type轉換成Java data type可以參考如下的表格:

MySQL資料型別 可被轉換的JAVA資料型別
CHAR, VARCHAR, BLOB, TEXT, ENUM, ,SE java.lang.String, java.io.InputStream, java.io.Reader, java.sql.Blob, java.sql.Clob
FLOAT, REAL, DOUBLE PRECISION, NUMERIC, DECIMAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT java.lang.String, java.lang.Short, java.lang.Integer, java.lang.Long, java.lang.Double, java.math.BigDecimal
DATE, TIME, DATETIME, TIMESTAMP java.lang.String, java.sql.Date, java.sql.Timestamp



參考連結:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-type-conversions.html

PHP的JSON編碼使用

JSON(JavaScript Object Notation)它是一種羽量級的資料交換語言,類似於XML的易於人類閱讀與使用,屬於Javascript的一個子集合,JSON的資料格式獨立於語言,目前被很多程式語言(PHP,ASP,JAVA,C...等等)所支援的資料交換格式。JSON的MIME 類型是application/json。

事前的準備工作:
  1. 建立一個$arr陣列物件
  2. 使用json_encode函數,把$arr陣列編碼成$json字串
  3. 再運用json_decode函數,把$json字品解碼回$arr_new陣列
首先,我們來使用PHP Array創建一個$arr的關連一維陣列,
<?php
// 建立$arr陣列
$arr = array("name"=>"Monkey boy", "tel"=>3829389);
?>

然後,以json_encode函數,把剛才建好的$arr陣列物件編碼成$json字串
<?php
// JSON編碼
$json = json_encode($arr);
?>

最後,透過json_decode函數,把$json字串解碼回$arr_new陣列物件
<?php
// JSON解碼
$arr_new = json_decode($json);
echo $arr_new;
?>

PHP陣列Array的使用

PHP語言當中,陣列是一種很常使用的資料型態,通常用來儲存一組資料或資料的集合。一般分為三種類型的陣列:
  1. 索引陣列
  2. 關聯陣列
  3.  多維陣列
索引陣列(或稱一維陣列)
<?php
// 建立一個$fruit陣列存放三個元素到陣列中
$fruit = array("香蕉","西瓜","蘋果");
echo $fruit[0];
?>

關聯陣列
它是由多組的鍵/值所組合而成的資料集合。
<?php
// 建立一個$member陣列存放二個元素到陣列中
$member = array("name"=>"Jerry","tel"=>"3924350");
echo $member["name"];
?>

多維陣列
顧名思義列陣裡面還有陣列的意思。我們就簡單實作一個二層次的两維陣列,如下所示。
<?php
// 產生一個$order两維陣列存放二個訂單明細陣列
$order = array(

           "order_id"=>"order0001",

           "total_amount"=>998,

           "detail0001"=>array("goods_name"=>"白上衣","price"=>299),

           "detail0002"=>array("goods_name"=>"牛仔褲","price"=>699),

          );

echo $order[detail0001]["goods_name"];
?>

陣列的基本操作
<?php
// 計算陣列的長度
echo count($order);

// 利用foreach讀取陣列元素
foreach($order as $key=>$value) {
    echo $value["order_id"];
    echo $value["total_amount"];
}

// 判斷'西瓜'元素是否在$fruit陣列中
if(in_array("西瓜", $fruit)) {
    echo "答對了!"
} else {
    echo "答錯了!"
}

// 將陣列內的元素重新賦於新的變數
list($banana,$watermelon,$apple) = $fruit;
echo $banana;
?>

2018年1月2日 星期二

PHP的序列化Serialize使用

首先,我們需要建立一個User的類別,便於後續物件序列化與反序列化的作業,

<?php
class User {
  private $name;
  private $pass;
  
  function __construct($name, $pass) {
      $this->name = $name;
      $this->pass = $pass;
  }

  public function getName() {
      return $this->name;
  }
  
  public function setName($name) {
      $this->name = $name;
  }

  public function getPass() {
      return $this->pass;
  }
  
  public function setPass($pass) {
      $this->pass = $pass;
  }
}
?>

以它來實體化一個新的$user物件,
<?php
$user = new User("Jerry", "adioirq386hsakhd");
echo $user->getName();
?>

然後我們使用serialize函數將$user物件序列化為字串,
<?php
//物件的序列化
$user_str = = serialize($user);
?>

最後可以利用unserialize函數把$user_str字串反序列化為$obj物件。
<?php
//物件的反序列化
$obj = unserialize($user_str);
?>