PHP函式 方法記錄

2021-09-05 01:13:13 字數 1896 閱讀 1969

1、陣列合併

陣列合併一般使用array_merage,但是當合併兩個鍵是數字的陣列時,陣列的數字索引將會被重置,有時候會引起不便。想要保留數字鍵值,使用+合併陣列

$arr1 = ['13'=>'1166','14'=>'1889'];

$arr2 = ['1'=>'1236','5'=>'1891'];

$arr = $arr1+$arr2;

array_merge合併陣列後,鍵是數字的值,鍵會從0開始往後排。合併陣列時,鍵名不是數字且鍵名相同的值,後面陣列的值會覆蓋前面陣列的該值;鍵名是數字且相等的值,不覆蓋前面的值,往後排。

+合併陣列後,鍵是數字的值,保留自身的鍵。合併陣列時,鍵名相同的值(不分數字或字串),前面陣列的覆蓋後面陣列中的該值。

使用+的這一特性,我們可以快速實現兩個陣列的合併去重,如下

先翻轉兩個陣列,然後使用+合併陣列,去除兩個陣列中的重複值,再用array_keys獲取值

array_keys(array_flip($user_arr_1)+ array_flip($user_arr_2));

2、二維陣列排序
$arr = [

['name'=>'張三','age'=>'15','h'=>'120'],

['name'=>'李四','age'=>'11','h'=>'121'],

['name'=>'王五','age'=>'4','h'=>'122'],

['name'=>'趙六','age'=>'11','h'=>'123'],

]; $sort_arr1 = array_column($arr,'age');

$sort_arr2 = array_column($arr,'h');

//按age順序排序

array_multisort($sort_arr1,sort_asc,$arr);

//先按age順序排序,age相同的再按h倒敘排序

array_multisort($sort_arr1,sort_asc,$sort_arr2,sort_desc,$arr);

3、 在類外部修改類的私有屬性
class aa

}$class = new aa();

echo $class->cc;

在這個類中,我們通過get把bb的值賦給了cc,輸出了:fkkyy。這個時候我們想要把bb的值修改一下,在原來有**中,我們只能直接在類中修改。

想在類外修改的話,我們需要用到 closure::bind(),把類的作用域繫結到乙個匿名函式上,然後再匿名函式內修改bb的值即可

class aa

}$class = new aa();

$func = \closure::bind(function(), $class,'aa');

$func();

echo $class->cc;

成功輸出:**** you

4、 get_class 和 get_called_class的區別

get_class :獲取定義當前方法的類名

get_called_class:獲取正在呼叫當前方法的類名

5、assert斷言和if判斷的區別

assert(1==2);斷言失敗後直接報錯

if(1 == 2){};判斷不符合,不影響後續**執行

6、獲得指定月份的開始和結束時間戳

$time = '2018-05';

$timebegin = strtotime($time) ; //開始時間戳

$day = date('t',$timebegin);

$timeend = $timebegin + 86400 * $day - 1; //結束時間戳

php函式記錄

移除陣列中重複的值 array unique 交換鍵值 array flip 隨機排序 shuffle 相當於遍歷陣列 奇怪的用法 怎麼不用foreach arr1 aaa 111,bbb 222,ccc 444,function test item arr2 array map test arr1...

PHP 方法記錄

半路由於公司需求得修改一些php程式。最近正在修改 其中遇到一些問題。也寫了幾個方法因此記錄下 function cutword str else 10 ret str.cn 11 ret str middle str.cn 12 13elseif strlen str 1 else 17 ret ...

PHP陣列函式記錄

引數 array1,array1為需合併的陣列ar ray1 o to 測 試 a rr ay1 ot o 測 試 array2 實驗 發放 oto 新內容 php 就好 print r array merge ar ray1 arr ay1,array2 結果為array oto 新內容 0 實驗...