在Yii2中获取键值对数组

时间:2016-10-13 12:46:47

标签: yii2

$data = User::find()
    ->select('id, name')
    ->where(['status' => 'active'])
    ->orderBy('id DESC')
    ->asArray()
    ->all();
[
 [0]=>[
        id=>1
        name="test"
      ]
[1]=>[
        id=>2
        name="test1"
      ]
]

我想要的是与此类似的数组。将id映射到名称,以便可以访问和检查它。

[
[1]=>'test'
[2]=>'test1'
]

2 个答案:

答案 0 :(得分:2)

您可以在查询中使用indexBy()column()来直接获得所需的输出,而不是使用ArrayHelper:

$data = User::find()
    ->select(['name', 'id'])
    ->where(['status' => 'active'])
    ->orderBy(['id' => SORT_DESC])
    ->indexBy('id')
    ->asArray()
    ->column();

indexBy()定义了数组键,而column()将选择条件中的第一列作为值。

答案 1 :(得分:1)

试试这个 添加以下命名空间并使用Yii2的arrayhelper映射

use yii\helpers\ArrayHelper

$userdata = ArrayHelper::map($data, 'id', 'name');