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