Php 如何从数组创建唯一数组
排列 我想从此数组创建新数组 如下所示,它应该给我“12”公共值,并添加其他值 排列Php 如何从数组创建唯一数组,php,arrays,array-unique,Php,Arrays,Array Unique,排列 我想从此数组创建新数组 如下所示,它应该给我“12”公共值,并添加其他值 排列 一个简单的foreach循环就可以做到这一点 [0] => Array ( [a1] => 12 [v1] => 4300.00 [v2] => 258.00 [v3] => 258.00 ) 请查找以下代码: $result = array(); foreach($yourArray as $arr
一个简单的foreach循环就可以做到这一点
[0] => Array
(
[a1] => 12
[v1] => 4300.00
[v2] => 258.00
[v3] => 258.00
)
请查找以下代码:
$result = array();
foreach($yourArray as $arr){
foreach($arr as $i=>$v) {
if(!isset($result[$i])) {
$result[$i] = 0;
}
if($i == 'a1'){
$result[$i] = $v;
} else {
$result[$i] += $v;
}
}
}
您的真正需求有点不清楚,因此此解决方案只是少数几种可能的解决方案之一 此脚本
a1
元素用作键,因此它将使用多个a1
值
例如:
<?php
$a = [
[
'a1' => 12,
'v1' => 3100.00,
'v2' => 186.00,
'v3' => 186.00,
],
[
'a1' => 12,
'v1' => 1200.00,
'v2' => 72.00,
'v3' => 72.00,
],
[
'a1' => 13,
'v1' => 2100.00,
'v2' => 386.00,
'v3' => 386.00,
],
[
'a1' => 13,
'v1' => 1200.00,
'v2' => 72.00,
'v3' => 72.00,
]
];
$r = [];
foreach ($a as $item) {
$key = $item['a1'];
if (empty($r[$key]))
$r[$key] = $item;
else {
foreach ($item as $k => $v) {
if ($k !== 'a1')
$r[$key][$k] = empty($r[$key][$k]) ? $item[$k] : $r[$key][$k] + $item[$k];
}
}
}
print_r(array_values($r));
是否要将每个数组的字段求和,并生成一个乘积数组?您可以使用foreach循环轻松完成此操作,也许您可以尝试先自己完成此操作,然后我们可以帮助您假设每个原始数组具有相同的长度吗?是@joshuamiller…长度将相同如果源数组是多维的,则您的$yourArray
不是(;OP;源数组是多维的,$yourArray不是(-;如果之前未声明$temp[0]['v1']或['v2']或['v3'],则+=运算符将抛出未定义的变量通知。
<?php
$merged = array();
$res = array('a1'=>12,'v1'=>3100.00,'v2'=>186.00,'v3'=>186.00);
$res1 = array('a1'=>12,'v1'=>1200.00,'v2'=>72.00,'v3'=>72.00);
foreach ([$res, $res1] as $a) { // iterate both arrays
foreach ($a as $key => $value) { // iterate all keys+values
$merged[$key] = $value + (isset($merged[$key]) ? $merged[$key] : 0); // merge and add
}
}
print "<pre>";
print_r($merged);
die;
?>
Try This code ,
foreach($value as $i=>$v) {
$temp[0]['a1'] = $v['a1'];
$temp[0]['v1'] += $v['v1'];
$temp[0]['v2'] += $v['v2'];
$temp[0]['v3'] += $v['v3'];
}
<?php
$a = [
[
'a1' => 12,
'v1' => 3100.00,
'v2' => 186.00,
'v3' => 186.00,
],
[
'a1' => 12,
'v1' => 1200.00,
'v2' => 72.00,
'v3' => 72.00,
],
[
'a1' => 13,
'v1' => 2100.00,
'v2' => 386.00,
'v3' => 386.00,
],
[
'a1' => 13,
'v1' => 1200.00,
'v2' => 72.00,
'v3' => 72.00,
]
];
$r = [];
foreach ($a as $item) {
$key = $item['a1'];
if (empty($r[$key]))
$r[$key] = $item;
else {
foreach ($item as $k => $v) {
if ($k !== 'a1')
$r[$key][$k] = empty($r[$key][$k]) ? $item[$k] : $r[$key][$k] + $item[$k];
}
}
}
print_r(array_values($r));