如何在yii2中创建名称值对数组

时间:2015-11-02 01:42:53

标签: arrays yii2 yii2-advanced-app

我正在尝试使用以下格式在Array中创建yii2

[
  ['id'=>'2', 'name'=>'ABC'],
  ['id'=>'3', 'name'=>'DEF']
]

到目前为止,我已经尝试使用ArrayHelper类但是如果我map使用它而不是从数组中删除key部分,我需要以这种格式创建数组

$data = User::find()
        ->where(['id' => $id])
        ->orderBy('id DESC')
        ->all();

如您所知,在此代码之后,我获得了ActiveRecord格式的数据,因此我只需要将它们转换为idname数组,我不需要任何其他数据。

我试过这个

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

但是以下列格式返回数据

[
  ['2'=>'ABC'],
  ['3'=>'DEF']
]

我也试过这个

$data = MainCategory::find()->select('id,name')
 ->where(['id' => $id])
  ->orderBy('id DESC') 
 ->asArray()->all();

但它以下列格式返回数组

[
  '0' =>
      [
       'id'=>'2', 
       'name'=>'ABC'
      ],
  '1' =>
      [
       'id'=>'3', 
       'name'=>'DEF'
      ]
]

我如何在key中实现valueyii2格式?

2 个答案:

答案 0 :(得分:2)

您可以像这样获取数据:

$data = User::find()
    ->select('id, name')
    ->where(['id' => $id])
    ->orderBy('id DESC')
    ->asArray()
    ->all();

答案 1 :(得分:0)

创建简单的KEY => VALUE数组使用column()方法:

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

首先选择的列[name]将作为VALUE返回。