陣列助手類 ArrayHelper
阿新 • • 發佈:2020-12-27
用原生PHP從一個物件、陣列、或者包含這兩者的一個複雜資料結構中獲取資料是非常繁瑣的。 你首先得使用
isset
檢查 key 是否存在, 然後如果存在你就獲取它,如果不存在, 則提供一個預設返回值。Yii
提供了一個非常方便的方法來做這件事ArrayHelper
#use yii\helpers\ArrayHelper;
$token='test2'
$user = User::find()->where(['auth_key' => $token])->asArray()->one();
var_dump($user);
原生寫法
$value = isset($user['id']) ? $user['id']: null;
ArrayHelper
方法的第一個引數是我們從哪裡獲取值。第二個引數指定了如何獲取資料, 它可以是下述幾種型別中的一個:
1、陣列鍵名或者欲從中取值的物件的屬性名稱;
2、以點號分割的陣列鍵名或者物件屬性名稱組成的字串,上例中使用的引數型別就是該型別;
3、返回一個值的回撥函式。
#獲取值
$value = ArrayHelper::getValue($user, 'id');
var_dump($value);//string '255'
#獲取值,無則輸出預設值預設ID,不設定第三個引數,預設值為null
$value = ArrayHelper::getValue($user, 'id','預設ID');
var_dump($value);//string '255' (length=3)
//當$token='無資料時';
var_dump($value);//string '預設ID' (length=8)
#回撥函式的寫法
$value = ArrayHelper::getValue($user, function ($user,$defaultValue){
echo $user['mobile']. '-' . $user['username'];
//string '17721318888-patti' (length=17)
});