phplemon Posted October 15, 2013 Share Posted October 15, 2013 Array ( [5] => first [3] => first [2] => second [4] => second ) Hi, I need to merge this array so it becomes this: Array ( [8] => first [6] => second ) So it adds 5 + 3 from the ones with value first. I have tried everything but cant find a solution. How can I do it? thx Quote Link to comment Share on other sites More sharing options...
Barand Posted October 15, 2013 Share Posted October 15, 2013 You can't. Array key values must be unique and you cannot guarantee that when you start adding them. You need to to rethink your array structure Quote Link to comment Share on other sites More sharing options...
Ch0cu3r Posted October 15, 2013 Share Posted October 15, 2013 (edited) You could do $array = array(5 => 'first', 3 => 'first', 2 => 'secound', 4 => 'secound'); $array_values = array_unique(array_values($array)); printf('<pre>%s</pre>', print_r($array_values, true)); foreach($array_values as $value) { echo $value .' = ' . array_sum(array_keys($array, $value)) . '<br />'; } Edited October 15, 2013 by Ch0cu3r Quote Link to comment Share on other sites More sharing options...
phplemon Posted October 15, 2013 Author Share Posted October 15, 2013 You can't. Array key values must be unique and you cannot guarantee that when you start adding them. You need to to rethink your array structure Ok, can I make it so that it adds 5 + 3 + an extra 100 to make sure its unique? So the array becomes like this: Array ( [108] => first [106] => second ) Quote Link to comment Share on other sites More sharing options...
phplemon Posted October 15, 2013 Author Share Posted October 15, 2013 You could do $array = array(5 => 'first', 3 => 'first', 2 => 'secound', 4 => 'secound'); $array_values = array_unique(array_values($array)); printf('<pre>%s</pre>', print_r($array_values, true)); foreach($array_values as $value) { echo $value .' = ' . array_sum(array_keys($array, $value)) . '<br />'; } Thank you, in the end it gives me this: Array ( [0] => first [2] => secound ) first = 8 secound = 6 Im going to merge the array with another array so this doesnt really work for me. Maybe I can use this as an array inside another array and still get the result I want. Thx. Quote Link to comment Share on other sites More sharing options...
Barand Posted October 15, 2013 Share Posted October 15, 2013 if you started with this array you have a problem, even if you add 100 $array = array(1 => 'second', 3 => 'first', 2 => 'first', 4 => 'second'); Quote Link to comment Share on other sites More sharing options...
AbraCadaver Posted October 15, 2013 Share Posted October 15, 2013 (edited) Maybe a description of what you want to do or overall end result instead of the end result of the array Edited October 15, 2013 by AbraCadaver Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.