使用一个列作为键,从一排阵列中从一组行和另一列作为值来形成一个关联数组

问题描述 投票:0回答:2
I有一个MySQL结果设置,每行中有2个值。 我要循环通过这些结果,我想将它们添加到数组中。 我希望一个值是键,另一个值是数组值。

我尝试了这个,但似乎没有用:

$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'];
php arrays associative-array flatten array-column
2个回答
8
投票

它更优雅/表现力/现代/简洁,而不是用于此任务的

array_column()
,也很努力工作,不应使用。

array_column()的第一个参数是行的输入阵列。 第二个参数是输出数组中值的列。 第三个参数是输出数组中的键的列。

代码:(

4
投票

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
loop
。 (

demo

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);

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.