用原生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)
});