Heim > Artikel > Backend-Entwicklung > Algorithmus – Wie füge ich doppelte Elemente eines Arrays in einem neuen Array in PHP zusammen?
Angenommen, das aktuelle Array ist
array(
0=>array('key1'=>'value1' , 'key2'=>'value2'),
1=>array('key1'=>'value1' , 'key2'=>'value3'),
2=>array('key1'=> ' value2' , 'key2'=>'value4'),
...
999=>array('key1'=>'value2' , 'key2'=>'value5')
)
So führen Sie die Werte von Schlüssel2 in einem neuen Array zusammen, wenn die Werte von Schlüssel1 in diesem Array gleich sind. Bitte schreiben Sie eine Methode, um das ursprüngliche Array in das folgende Array zu konvertieren:
array(
0=>array('value1'=>array('value2','value3')),
1 => array('value2'=>array('value4','value5')),
...
)
Angenommen, das aktuelle Array ist
array(
0=>array('key1'=>'value1' , 'key2'=>'value2'),
1=>array('key1'=>'value1' , 'key2'=>'value3'),
2=>array('key1'=> ' value2' , 'key2'=>'value4'),
...
999=>array('key1'=>'value2' , 'key2'=>'value5')
)
So führen Sie die Werte von Schlüssel2 in einem neuen Array zusammen, wenn die Werte von Schlüssel1 in diesem Array gleich sind. Bitte schreiben Sie eine Methode, um das ursprüngliche Array in das folgende Array zu konvertieren:
array(
0=>array('value1'=>array('value2','value3')),
1 => array('value2'=>array('value4','value5')),
...
)
Fragetitel, ist er unabhängig davon, ob key1
wiederholt wird oder nicht? Hier erfahren Sie, wie es geht
<code>$arr = array( 0=>array('key1'=>'value1' , 'key2'=>'value2'), 1=>array('key1'=>'value1' , 'key2'=>'value3'), 2=>array('key1'=>'value2' , 'key2'=>'value4'), 999=>array('key1'=>'value2' , 'key2'=>'value5') ); $result = array(); foreach ($arr as $data) { isset($result[$data['key1']]) || $result[$data['key1']] = array(); $result[$data['key1']][] = $data['key2']; } print_r($result); //输出如下 Array ( [value1] => Array ( [0] => value2 [1] => value3 ) [value2] => Array ( [0] => value4 [1] => value5 ) )</code>
Ich denke, es wäre viel besser, wenn Sie die Array-Organisationsform ändern würden.
Wenn Sie es nicht ändern können, wird es natürlich sehr schwierig sein.
Verwenden Sie dazu beispielsweise Traversal.