程式筆記

[PHP] 陣列排序的方法

 

根據陣列值排序

Function name Maintains key association 順序 Related functions
array_multisort() associative yes, numeric no first array or sort options array_walk()
asort() yes 低到高 arsort()
arsort() yes 高到低 asort()
natcasesort() yes natural, case insensitive natsort()
natsort() yes natural natcasesort()
rsort() no 高到低 sort()
shuffle() no 隨機 array_rand()
sort() no 低到高 rsort()
uasort() yes 自定義 uksort()
usort() no 自定義 uasort()

 

[CSS3] CSS 中使用變數 - var

CSS3 中多了一個好用的東西,可以讓我們設定變數以供其他地方使用,應用在如 color相關的 css 設定 特別好用。

這個好用的屬性就是  var ,顧名思義就是 variable 的意思

瀏覽器的支援度可參考這篇
https://www.w3schools.com/css/css3_variables.asp

 

變數的設定,通常是寫在 root 以作為全域的預設的變數,但也可以寫在任何 tag 裡面,如以下範例:

:root {
    --main-color: #ff0;
    --secondary-color: #f00;
}

h1 {
    color: var(--main-color);
}
p {
    color: var(--secondary-color, #000);
}

上面的例子中,我們建立了兩個變數

[CSS3] css也能計算! - calc()

為了方便排版CSS3 引進了  flexbox 的用法,但使用上還是有些限制,

例如

  1. 同一個容器底下的五個子元素中,只有兩個需 flexbox 的效果,但又不想改變html結構時
  2.  一行 (row) 有三個元素,目標是space-between的排版,而容器中共有5個元素,第二行將無法與第一行對齊

上述第 2 點就會比較適用 calc() ,尤其是 calc 可以直接在 百分比與 像素之間直接進行計算

使用方法:

.item-container{
  margin-left:-10px;
  margin-right:-10px;
}

.my-item{
  width: calc((100% - 60px)/3);
  height:30px;
  padding:5px 10px;
  float:left;
  margin:0 10px 5px;
  box-sizing:border-box;
}

 

Drupal 只更新欄位但不更新Node的方法及其執行速度比較

共有四種作法,為了方便比較,第二種作法也會更新Node本身

1. 直接操作 Node 物件

2.利用entity_metadata_wrapper

3. 方法2+方法1

4. 利用entity_create+entity_metadata_wrapper

 

執行速度:1 ≒ 4 >> 3 ≒ 2

1:0.0106489ms

2:0.0478260ms

3:0.0379638ms

4:0.0052890ms

1大概用了4的一倍時間,3則大概用了1的3~4倍時間,2則比3多一點

跑迴圈測試後發現,1還是比較快,不過4只慢一點,但相對來說比較好開發,所以首選應該還是4

不過相對而言,2需要寫的程式碼最少,4要寫程式的最多

※ 比較基礎:只更新一個整數欄位,且該內容類型中有6個欄位

Drupal 模組開發 - 用程式建立node(使用entiy API)

$entity = entity_create('node', array(
  'status' => 1,//已發表
  'type' => 'category',//內容類型
));
$wrapper = entity_metadata_wrapper('node', $entity);
$wrapper->title->set('Title');//設定標題
$wrapper->body->value->set('This is my body');//設定body
$wrapper->field_text->set('Hello world!');//設定某文字欄位
$wrapper->field_image->url->set('http://url');//設定圖片欄位
$wrapper->save();//儲存
$wrapper->nid->value();//取得新node的nid