PHP 多维数组中具有相同元素的数组中的值相乘
PHP Multiply Value in array where has same element in multidimentional array
谁能解释一下如何乘以这段代码的值?我试过了,但仍然无法解决这个问题
arrayK(
0 => array(
'name'=> AA,
'value' => 2.00,
),
1 => array(
'name' => AA,
'value' => 1.82,
),
2 => array(
'name' => BB,
'value' => 2.20,
),
3 => array(
'name' => AA,
'value' => 4.20,
),
4 => array(
'name' => BB,
'value' => 4.20,
),
);
答案应该返回到数组,其值已经乘以具有相同名称的地方
newArray(
0 => array(
'name'=> AA,
'value' => ...,
),
1 => array(
'name' => BB,
'value' => ....,
),
);
要乘以重复值并得到新数组:
$array=array(
0 => array(
'name'=> AA,
'value' => 2.00,
),
1 => array(
'name' => AA,
'value' => 1.82,
),
2 => array(
'name' => BB,
'value' => 2.20,
),
3 => array(
'name' => AA,
'value' => 4.20,
),
4 => array(
'name' => BB,
'value' => 4.20,
),
);
$result = array();
foreach ($array as $val) {
if (!isset($result[$val['name']]))
$result[$val['name']] = $val;
else
$result[$val['name']]['value'] *= $val['value'];
}
$result = array_values($result); // reindex array
echo "<pre>";
print_r($result);
您可以尝试以下解决方案。
$arrayK = array(
0 => array(
'name'=> "AA",
'value' => 2.00,
),
1 => array(
'name' => "AA",
'value' => 1.82,
),
2 => array(
'name' => "BB",
'value' => 2.20,
),
3 => array(
'name' => "AA",
'value' => 4.20,
),
4 => array(
'name' => "BB",
'value' => 4.20,
),
);
$temp = array_values((array_unique(array_column($arrayK, 'name'))));
$arrayY = [];
for( $i = 0; $i < count($temp); $i++ ) {
foreach( $arrayK as $key => $val ) {
if( $val['name'] == $temp[$i] ) {
$arrayY[$i] = [
'name' => $val['name'],
'value' => isset($arrayY[$i]['value']) ? $val['value'] * $arrayY[$i]['value'] : $val['value']
];
}
}
}
print_r($arrayY);
输出
Array
(
[0] => Array
(
[name] => AA
[value] => 15.288
)
[1] => Array
(
[name] => BB
[value] => 9.24
)
)
你可以玩代码Here
谁能解释一下如何乘以这段代码的值?我试过了,但仍然无法解决这个问题
arrayK(
0 => array(
'name'=> AA,
'value' => 2.00,
),
1 => array(
'name' => AA,
'value' => 1.82,
),
2 => array(
'name' => BB,
'value' => 2.20,
),
3 => array(
'name' => AA,
'value' => 4.20,
),
4 => array(
'name' => BB,
'value' => 4.20,
),
);
答案应该返回到数组,其值已经乘以具有相同名称的地方
newArray(
0 => array(
'name'=> AA,
'value' => ...,
),
1 => array(
'name' => BB,
'value' => ....,
),
);
要乘以重复值并得到新数组:
$array=array(
0 => array(
'name'=> AA,
'value' => 2.00,
),
1 => array(
'name' => AA,
'value' => 1.82,
),
2 => array(
'name' => BB,
'value' => 2.20,
),
3 => array(
'name' => AA,
'value' => 4.20,
),
4 => array(
'name' => BB,
'value' => 4.20,
),
);
$result = array();
foreach ($array as $val) {
if (!isset($result[$val['name']]))
$result[$val['name']] = $val;
else
$result[$val['name']]['value'] *= $val['value'];
}
$result = array_values($result); // reindex array
echo "<pre>";
print_r($result);
您可以尝试以下解决方案。
$arrayK = array(
0 => array(
'name'=> "AA",
'value' => 2.00,
),
1 => array(
'name' => "AA",
'value' => 1.82,
),
2 => array(
'name' => "BB",
'value' => 2.20,
),
3 => array(
'name' => "AA",
'value' => 4.20,
),
4 => array(
'name' => "BB",
'value' => 4.20,
),
);
$temp = array_values((array_unique(array_column($arrayK, 'name'))));
$arrayY = [];
for( $i = 0; $i < count($temp); $i++ ) {
foreach( $arrayK as $key => $val ) {
if( $val['name'] == $temp[$i] ) {
$arrayY[$i] = [
'name' => $val['name'],
'value' => isset($arrayY[$i]['value']) ? $val['value'] * $arrayY[$i]['value'] : $val['value']
];
}
}
}
print_r($arrayY);
输出
Array
(
[0] => Array
(
[name] => AA
[value] => 15.288
)
[1] => Array
(
[name] => BB
[value] => 9.24
)
)
你可以玩代码Here