PHP-如何使用重复的元素值对数组元素求和
我有一个多数组,它有一些名称相同的重复值(名称是一个元素)PHP-如何使用重复的元素值对数组元素求和,php,arrays,multidimensional-array,duplicates,Php,Arrays,Multidimensional Array,Duplicates,我有一个多数组,它有一些名称相同的重复值(名称是一个元素) 我想对具有相同名称的每个数组的数量求和,然后取消设置第二个数组 示例: <?php $Array=array( 0=>array("name"=>"X","QTY"=>500), 1=>array("name"=>"y","QTY"=>250), 2=>array("name"=>"X","QTY"=>250) ); ?> <?php $Ar
我想对具有相同名称的每个数组的数量求和,然后取消设置第二个数组
示例:
<?php
$Array=array(
0=>array("name"=>"X","QTY"=>500),
1=>array("name"=>"y","QTY"=>250),
2=>array("name"=>"X","QTY"=>250)
);
?>
<?php
$Array=array(
0=>array("name"=>"X","QTY"=>750),
1=>array("name"=>"y","QTY"=>250)
);
?>
现在,我想对重复的值求和,如下所示。
结果:
<?php
$Array=array(
0=>array("name"=>"X","QTY"=>500),
1=>array("name"=>"y","QTY"=>250),
2=>array("name"=>"X","QTY"=>250)
);
?>
<?php
$Array=array(
0=>array("name"=>"X","QTY"=>750),
1=>array("name"=>"y","QTY"=>250)
);
?>
更新
我发现这个函数在数组中搜索,foreach和其他循环也不起作用
<?php
function search($array, $key, $value)
{
$results = array();
if (is_array($array)) {
if (isset($array[$key]) && $array[$key] == $value) {
$results[] = $array;
}
foreach ($array as $subarray) {
$results = array_merge($results, search($subarray, $key, $value));
}
}
return $results;
}
?>
试试这个最简单的,希望对你有所帮助
通过创建一个以
name
为键的数组,然后迭代所有值并将它们相加,可以实现这一点
function sum_same($array) {
$keyArray = [];
foreach ($array as $entry) {
$name = $entry["name"];
if(isset($keyArray[$name])) {
$keyArray[$name] += $entry["QTY"];
} else {
$keyArray[$name] = $entry["QTY"];
}
}
// Convert the keyArray to the old format.
$resultArray = [];
foreach ($keyArray as $key => $value) {
$resultArray[] = ["name" => $key, "QTY" => $value];
}
return $resultArray;
}
如果要更改旧阵列,请使用以下函数:
$myArray = sum_same($myArray);
旧数组将被新数组覆盖。尝试此操作,检查
<?php
$Array=array(
0=>array("name"=>"X","QTY"=>500),
1=>array("name"=>"y","QTY"=>250),
2=>array("name"=>"X","QTY"=>250)
);
$keys = array_column($Array, 'name');
$QTYs = array_column($Array, 'QTY');
$result = [];
foreach($keys as $k => $v)
{
$result[$v] += $QTYs[$k];
}
print_r($result);
此问题是一个典型的使用示例:
是您正在寻找的PHP函数。您是否尝试了foreach()
?@RST更新,foreach没有帮助。您是添加了该函数还是实际使用了它?我使用了它。我正在使用codeigniter框架,一切正常,使用此函数我可以找到重复的值,主要部分是求和值并删除另一个数组。我可以工作,但有一个问题,我没有删除旧数组。@Nimahabibkhoda我更新了我的答案。如果这是你想要的,那么接受我的回答,如果不是,请进一步阐述你所说的删除是什么意思,以及你想通过这样做实现什么。这对我没有帮助
<?php
$Array=array(
0=>array("name"=>"X","QTY"=>500),
1=>array("name"=>"y","QTY"=>250),
2=>array("name"=>"X","QTY"=>250)
);
$result = array();
$names = array_column($Array, 'name');
$QTYs = array_column($Array, 'QTY');
$unique_names = array_unique($names);
foreach ($unique_names as $name){
$this_keys = array_keys($names, $name);
$qty = array_sum(array_intersect_key($QTYs, array_combine($this_keys, $this_keys)));
$result[] = array("name"=>$name,"QTY"=>$qty);
}
array (
0 =>
array (
'name' => 'X',
'QTY' => 750,
),
1 =>
array (
'name' => 'y',
'QTY' => 250,
),
)