如何在 yii2 中创建名称值对数组
How to create name value pair array in yii2
我正在尝试按照以下格式在 yii2
中创建 Array
[
['id'=>'2', 'name'=>'ABC'],
['id'=>'3', 'name'=>'DEF']
]
到目前为止我已经尝试使用 ArrayHelper
class 但是如果我 map
使用它而不是它从数组中删除 key
部分,我需要创建正是这种格式的数组
$data = User::find()
->where(['id' => $id])
->orderBy('id DESC')
->all();
正如你所知,在这段代码之后我得到了 ActiveRecord
格式的数据,所以我只需要将它们转换为 id
和 name
数组,我不需要任何其他数据。
我试过这样做
$data2 = ArrayHelper::map($data, 'id', 'name');
但是returns数据格式如下
[
['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'
]
]
如何在 yii2
中获得 key
和 value
格式?
您可以像这样以数组形式获取数据:
$data = User::find()
->select('id, name')
->where(['id' => $id])
->orderBy('id DESC')
->asArray()
->all();
要创建纯 KEY => VALUE 数组,请使用 column()
方法:
$data = User::find()
->select(['name', 'id'])
->where(['id' => $id])
->orderBy('id DESC')
->asArray()
->indexBy('id')
->column();
第一个选定的列 [name] 将作为 VALUE 返回。
我正在尝试按照以下格式在 yii2
中创建 Array
[
['id'=>'2', 'name'=>'ABC'],
['id'=>'3', 'name'=>'DEF']
]
到目前为止我已经尝试使用 ArrayHelper
class 但是如果我 map
使用它而不是它从数组中删除 key
部分,我需要创建正是这种格式的数组
$data = User::find()
->where(['id' => $id])
->orderBy('id DESC')
->all();
正如你所知,在这段代码之后我得到了 ActiveRecord
格式的数据,所以我只需要将它们转换为 id
和 name
数组,我不需要任何其他数据。
我试过这样做
$data2 = ArrayHelper::map($data, 'id', 'name');
但是returns数据格式如下
[
['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'
]
]
如何在 yii2
中获得 key
和 value
格式?
您可以像这样以数组形式获取数据:
$data = User::find()
->select('id, name')
->where(['id' => $id])
->orderBy('id DESC')
->asArray()
->all();
要创建纯 KEY => VALUE 数组,请使用 column()
方法:
$data = User::find()
->select(['name', 'id'])
->where(['id' => $id])
->orderBy('id DESC')
->asArray()
->indexBy('id')
->column();
第一个选定的列 [name] 将作为 VALUE 返回。