![](/img/trans.png)
[英]I have a below array with some same keys with different values. How can I combine same keys values with that key in PHP? I am using WAMP, Codeigniter
[英]How can I combine different array values with common key
我有一個像這樣的數組:
Array
(
[0] => Array
(
[minutesPlayed] => 0
[totalSecondsPlayed] => 0
[flagrantFouls] => 0
[foulsReceived] => 0
[blocksReceived] => 0
[plusMinus] => 0
[player] => Array
(
[playerId] => 830651
[firstName] => Walter
[lastName] => Tavares
[uniform] => 21
)
[fieldGoals] => Array
(
[made] => 0
[attempted] => 0
)
[freeThrows] => Array
(
[made] => 12
[attempted] => 4
)
[threePointFieldGoals] => Array
(
[made] => 0
[attempted] => 0
)
)
[1] => Array
(
[minutesPlayed] => 0
[totalSecondsPlayed] => 0
[flagrantFouls] => 0
[foulsReceived] => 0
[blocksReceived] => 0
[plusMinus] => 0
[player] => Array
(
[playerId] => 830651
[firstName] => John
[lastName] => Tavares
[uniform] => 22
)
[fieldGoals] => Array
(
[made] => 0
[attempted] => 0
)
[freeThrows] => Array
(
[made] => 12
[attempted] => 6
)
[threePointFieldGoals] => Array
(
[made] => 0
[attempted] => 0
)
)
[2] => Array
(
[minutesPlayed] => 0
[totalSecondsPlayed] => 0
[flagrantFouls] => 0
[foulsReceived] => 0
[blocksReceived] => 0
[plusMinus] => 0
[player] => Array
(
[playerId] => 830651
[firstName] => Adrian
[lastName] => Tavares
[uniform] => 23
)
[fieldGoals] => Array
(
[made] => 0
[attempted] => 0
)
[freeThrows] => Array
(
[made] => 0
[attempted] => 0
)
[threePointFieldGoals] => Array
(
[made] => 12
[attempted] => 8
)
)
[3] => Array
(
[minutesPlayed] => 0
[totalSecondsPlayed] => 0
[flagrantFouls] => 0
[foulsReceived] => 0
[blocksReceived] => 0
[plusMinus] => 0
[player] => Array
(
[playerId] => 830651
[firstName] => Adrian
[lastName] => Methue
[uniform] => 24
)
[fieldGoals] => Array
(
[made] => 0
[attempted] => 0
)
[freeThrows] => Array
(
[made] => 0
[attempted] => 0
)
[threePointFieldGoals] => Array
(
[made] => 0
[attempted] => 0
)
)
)
我希望它是這樣的:
Array
(
[fieldGoals] => Array
[0](
[player_name]=>Walter Tavares
[playerId] => 830651
[made] => 0
[attempted] => 0
)
[1](
[player_name]=>John Tavares
[playerId] => 830651
[made] => 0
[attempted] => 0
)
[2](
[player_name]=>Adrian Tavares
[playerId] => 830651
[made] => 0
[attempted] => 0
)
[3](
[player_name]=>Adrian Methue
[playerId] => 830651
[made] => 0
[attempted] => 0
)
[freeThrows] => Array
[0](
[player_name]=>Walter Tavares
[playerId] => 830651
[made] => 12
[attempted] => 4
)
[1](
[player_name]=>John Tavares
[playerId] => 830651
[made] => 12
[attempted] => 6
)
[2](
[player_name]=>Adrian Tavares
[playerId] => 830651
[made] => 12
[attempted] => 8
)
[3](
[player_name]=>Adrian Methue
[playerId] => 830651
[made] => 0
[attempted] => 0
)
[threePointFieldGoals] => Array
[0](
[player_name]=>Walter Tavares
[playerId] => 830651
[made] => 0
[attempted] => 0
)
[1](
[player_name]=>John Tavares
[playerId] => 830651
[made] => 0
[attempted] => 0
)
[2](
[player_name]=>Adrian Tavares
[playerId] => 830651
[made] => 0
[attempted] => 0
)
[3](
[player_name]=>Adrian Methue
[playerId] => 830651
[made] => 0
[attempted] => 0
)
)
這是我到目前為止所做的:
foreach($myArr as $playerStatsKey=>$playerStatsArray){
if(!is_array($playerStatsArray)){
continue;
}
foreach($playerStatsArray as $playkey=>$playVal){
if(!is_array($playVal)){
continue;
}
if($playkey=='player'){
$playerInfo[$playkey]['made'] = $playVal['made'];
$playerInfo[$playkey]['attempted'] = $playVal['attempted'];
}
$arr[$playkey] = $playerInfo;
$arr[$playkey] = $playVal['made'];
$arr[$playkey] = $playVal['attempted'];
}
echo '<pre>' ;print_r($arr );
我只想將不同的數組值與通用鍵結合在一起,如何實現呢?
這個給你。 此功能將完成您的任務:
function combinePlayers( $array ) {
$return_array = array();
foreach ( $array as $element ) {
//collect data for the new player object
$player = array(
'player_name' => $element['player']['firstName'] . ' ' . $element['player']['lastName'],
'playerId' => $element['player']['playerId']
);
foreach ( $element as $key => $value ) {
if ( is_array( $value ) && $key != 'player' ) {
//collect the keys to build the structure of the $return_array
if ( ! array_key_exists( $key, $return_array ) ) {
$return_array[ $key ] = array();
}
//collect the returning values from the input array
array_push( $return_array[ $key ], array_merge( $value, $player ) );
}
}
}
return $return_array;
}
此函數循環遍歷輸入數組並收集不是玩家信息的數組值。 同樣在迭代中,它創建一個新的播放器對象,該對象將合並到所有值。
Try like this..
It will return the combined result array as you want. I hope this will help.
foreach($myArr as $playerStatsKey=>$playerStatsArray){
$arr['fieldGoals'][] = array(
'player_name'=>$playerStatsArray['player']['firstName']." ".$playerStatsArray['player']['lastName'],
'playerId'=>$playerStatsArray['player']['playerId'],
'made'=>$playerStatsArray['fieldGoals']['made'],
'attempted'=>$playerStatsArray['fieldGoals']['attempted']
);
$arr['freeThrows'][] = array(
'player_name'=>$playerStatsArray['player']['firstName']." ".$playerStatsArray['player']['lastName'],
'playerId'=>$playerStatsArray['player']['playerId'],
'made'=>$playerStatsArray['freeThrows']['made'],
'attempted'=>$playerStatsArray['freeThrows']['attempted']
);
$arr['threePointFieldGoals'][] = array(
'player_name'=>$playerStatsArray['player']['firstName']." ".$playerStatsArray['player']['lastName'],
'playerId'=>$playerStatsArray['player']['playerId'],
'made'=>$playerStatsArray['threePointFieldGoals']['made'],
'attempted'=>$playerStatsArray['threePointFieldGoals']['attempted']
);
}
echo '<pre>' ;print_r($arr );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.