場(chǎng)景,把鍵相同的多個(gè)數(shù)組,合并到鍵下面的多個(gè)數(shù)組里面,圖一是原數(shù)組,圖二是我們想要的結(jié)果數(shù)組

圖1,原數(shù)組

圖22,我們想要的結(jié)果
代碼
public function test()
{
$arr = [
[ 1 => [ 1 , 11 ], ],
[ 1 => [ 11 , 22 ], ],
[ 1 => [ 3 , 33 ], ],
[ 2 => [ 2 , 11 ], ],
[ 2 => [ 2 , 22 ], ],
[ 3 => [ 3 , 33 ], ],
];
$data = $this->test3($arr);
dd($arr1);
}
public function test3($arr)
{
foreach ($arr as $key => $value)
{
foreach ($value as $key1 => $value1){
$result[$key1][] = $value1;
}
}
return $result;
}
雖然這個(gè)問(wèn)題很簡(jiǎn)單,但是我費(fèi)了好多時(shí)間。但是把解決思路做個(gè)總結(jié)吧。對(duì)于以后的思考會(huì)有幫助
思路1,我想得到鍵。取相同的鍵。第1步測(cè)試,我想得到鍵。那么我們先試試打印$key值。我們發(fā)現(xiàn)不是想要的結(jié)果

第一步,打印$key值
思路1,第2步測(cè)試,我們打印$value看看。發(fā)現(xiàn)也不是我們要的結(jié)果。但是我們把數(shù)組點(diǎn)開(kāi)后。發(fā)現(xiàn)這個(gè)$value再遍歷一次,即可得到我們想要的鍵

打印$value
思路1,第三步測(cè)試。我們打印$key1,查看下,得到了我們要的鍵。

打印$key1
思路2,第一步測(cè)試.找到了相同的鍵,我們先把此處鍵對(duì)應(yīng)的的$value1打印看下吧

打印$value1
思路2結(jié)果分析。我們得到了我們想要的值,只是鍵不是我們想要的。但是鍵,我們已經(jīng)在思路1的測(cè)試3里面找到了。所以我們可在此處的數(shù)組前面再加上我們的鍵,即可得到我們的結(jié)果 $result[$key1][] = $value1;。于是我們就有了test3()函數(shù)
public function test()
{
$arr = [
[ 1 => [ 1 , 11 ], ],
[ 1 => [ 11 , 22 ], ],
[ 1 => [ 3 , 33 ], ],
[ 2 => [ 2 , 11 ], ],
[ 2 => [ 2 , 22 ], ],
[ 3 => [ 3 , 33 ], ],
];
$data = $this->test3($arr);
dd($data);
}
public function test3($arr)
{
$result = array();
foreach ($arr as $key => $value)
{
foreach ($value as $key1 => $value1){
$result[$key1][] = $value1;
}
}
return $result;
}
思考,
有時(shí)候我們想不通的時(shí)候,我們可以先把結(jié)果自己寫(xiě)出來(lái),然后從結(jié)果上,
往上一層層尋找自己需要的信息。一般都可以寫(xiě)出來(lái)自己需要的函數(shù)