我尝试了这个,但似乎没有用:
$dataarray[] = $row['id'] => $row['data'];
如果我有:
$resultSet = [
['id' => 1, 'data' => 'one'],
['id' => 2, 'data' => 'two'],
['id' => 3, 'data' => 'three']
];
[
1 => 'one',
2 => 'two',
3 => 'three'
]
为什么不仅使用
$dataarray[$row['id']] = $row['data'];
?
它更优雅/表现力/现代/简洁,而不是用于此任务的
array_column()
。,也很努力工作,不应使用。
array_column()的第一个参数是行的输入阵列。 第二个参数是输出数组中值的列。 第三个参数是输出数组中的键的列。
代码:(
foreach()
输出:
array_combine(array_column($array, 'id'), array_column($array, 'data'))
laravel等效的呼叫收藏的方法是::
$array = [
['id' => 1, 'key' => 'foo', 'data' => 'a'],
['id' => 2, 'key' => 'bar', 'data' => 'b'],
['id' => 3, 'key' => 'barf', 'data' => 'c'],
];
var_export(
array_column($array, 'data', 'id')
);
如果您想分配新的第一级键,但将行保持不变,则将array (
1 => 'a',
2 => 'b',
3 => 'c',
)
代码:(demo)
pluck()
输出:
$collection->pluck('data', 'id')
较少实现的,无功能的技术是在内部破坏的阵列
null
loopdemo
)
var_export(
array_column($array, null, 'id')
);
array (
1 =>
array (
'id' => 1,
'key' => 'foo',
'data' => 'a',
),
2 =>
array (
'id' => 2,
'key' => 'bar',
'data' => 'b',
),
3 =>
array (
'id' => 3,
'key' => 'barf',
'data' => 'c',
),
)
输出:
foreach()
$array = [
['id' => 1, 'data' => 'a'],
['id' => 2, 'data' => 'b'],
['id' => 3, 'data' => 'c'],
];
$result = [];
foreach ($array as ['id' => $id, 'data' => $result[$id]]);
var_export($result);