Here is your solution, as you need.. Though, validation for integer value in Sum function is remained to implement.. you can add it manually..
$user1 = '{"id":1,"name":"u1","score":10}';
$user2 = '{"id":2,"name":"u2","score":20}';
$admins = array($user1, $user2);
echo magicalArrayFunction($admins, 'name', ', ');
//SHOULD OUTPUT: "u1, u2"
echo "<br>";
echo magicalSumArrayFunction($admins, 'score');
//SHOULD OUTPUT: 30
function magicalArrayFunction($array, $column, $sep = ', ') {
foreach($array as $jsons){
$new_Arr[] = json_decode($jsons, true);
}
return implode($sep,array_column_custom($new_Arr, $column));
}
function magicalSumArrayFunction($array, $column){
foreach($array as $jsons){
$new_Arr[] = json_decode($jsons, true);
}
return array_sum(array_column_custom($new_Arr, $column));
}
function array_column_custom($array, $column){
foreach($array as $keys=>$inner_array){
foreach($inner_array as $inner_keys=> $values){
if($inner_keys == $column){
$newArr[] = $values;
}
}
}
return $newArr;
}
Edit: One Liner Solution
$user1 = '{"id":1,"name":"u1","score":10}';
$user2 = '{"id":2,"name":"u2","score":20}';
$admins = array($user1, $user2);
// Fixed column name used here i.e. 'name','score'..
$userNames = implode(',', array_map(function($u){$u=json_decode($u, true); return $u['name'];}, $admins));
$totalScore = array_sum(array_map(function($u){ $u=json_decode($u, true); return $u['score'];}, $admins));
// If you need to call function..
echo magicalArrayFunction($admins, 'name', ', ');
echo magicalSumArrayFunction($admins, 'score');
function magicalArrayFunction($array, $column, $sep = ', ') {
return implode($sep, array_map(function($u,$c){ $u=json_decode($u, true); return $u[$c];}, $array, str_split(str_repeat($column, count($array)),strlen($column)) ));
}
function magicalSumArrayFunction($array, $column){
return array_sum(array_map(function($u,$c){ $u=json_decode($u, true); return $u[$c];}, $array,str_split(str_repeat($column, count($array)),strlen($column))));
}
$user1 = { id: 1, name: 'u1', score: 10 }. This syntax is invalid in PHParray_columnwithjoinorarray_sumwould do.array_map("get_object_vars", $admin).