1
我有一个来自转换成数组的数据的查询。我的目标是根据每个成员持有的组ID将多个成员分组到他们各自的组中。所以基本上,我需要一个三维阵列,与第一列保持组ID,第二保持每个成员的阵列,和第三保持该成员的信息即如何根据该数组中的值对数组进行分组 - php(laravel)
Array(
[1] => array(
array([member_id] => 3
[type] => human
[group_id] => 1
),
array([member_id] => 4
[type] => alien
[group_id] => 1
),
)
[2] => array(
array([member_id] => 9
[type] => human
[group_id] => 2
),
array([member_id] => 10
[type] => alien
[group_id] => 2
),
)
)
我试过几件事情,已经接近得到我这一目标的一个是:
通过他们的组排序他们给了我与各成员二维数组按升序返回,就像这样:
Array
(
[0] => Array
(
[member_id] => 7
[type] => human
[group_id] => 1
)
[1] => Array
(
[customer_id] => 5
[type] => alien
[group_id] => 1
)
[2] => Array
(
[customer_id] => 8
[type] => alien
[group_id] => 2
)
//there is no group #3, so next group is 4
[3] => Array
(
[customer_id] => 3
[type] => human
[group_id] => 4
)
)
但这些密钥不是基于组ID,t他只是由该功能分配的。
为了使第一阵列按键实际组ID,我做了以下内容:
$sorted = array();
$i=0;
while($i <= count($members))
{
foreach($members as $member)
{
if($member['group_id'] == $i)
{
$sorted[$i] = $member;
}
}
echo $i;
$i++;
}
但是,这给了我只为每个组和没有任何更多的第一个成员。
SOLUTION: 我希望它仍然是好的张贴在回答我的问题,它只是来找我,而我在写了这个问题,哈哈...
我实际上并没有创造内$sorted[]
另一个数组在我的条件下,这就是为什么它不附加其他成员,只有一个。我添加了一对括号:
$sorted[$i][] = $member;
它的作品:)。希望它能帮助未来的人。
我得到了和我自己一样的结果,但这样更干净。然而,我的方法有什么问题(除了太多的条件陈述外)?谢谢 – a7omiton
虽然它可以工作,但依靠PHP创建空阵列时并不是“干净”的。这就像使用'。='连接到一个字符串,但不是首先将它初始化为'''。如果您启用警告,您可能会收到有关未定义索引引用的通知。 – Barmar
谢谢你指出,我没有意识到这一点。稍后将会考虑另一种解决方案。我兴奋地玩了一场桥牌游戏:D – a7omiton