我需要有关如何使用相同的键添加或组合数组值的帮助或建议。
例如:
Array(
[price] => 123
[category] => Fiction
[bookname] => Any-Book
[type] => Futuristic
)
Array (
[price] => 145
[category] => Fantasy
[bookname] => Any-Book
[type] => Futuristic
)
经过多次尝试,我无法达到我想要的效果 它应该是:
Array (
[price] => 268
[category] => Fantasy/Fiction
[bookname] => Any-book
[type] => Futuristic
)
我只需要将两者基本相同或者需要捆绑在一起。
答案 0 :(得分:1)
您需要确定数组的类型并且它们具有相同的键:
<?php
$a = array('price' => 123,
'category' => 'Fiction',
'bookname' =>'Any-book',
'type' => 'Futuristic');
$b = array('price' => 145,
'category' => 'Fantasy',
'bookname' =>'Any-book',
'type' => 'Futuristic');
function mergeSameArray(array $a, array $b){
$c = array();
foreach($a as $key => $valueA){
$typeA = gettype($valueA);
$typeB = gettype($b[$key]); //$valueB
if($typeB == $typeA){
if($typeB == "double" || $typeA == "integer"){
$c[$key] = $valueA+ $b[$key];
}
elseif($typeB == "string"){
if($valueA == $b[$key]){
$c[$key] = $valueA;
}
else{
$c[$key] = $valueA.'/'. $b[$key];
}
}
else{
$c[$key] = "error nor string nor number";
}
}
else{
$c[$key] = "error not same type";
}
}
return $c;
}
$arraySum = mergeSameArray($a,$b);
print_r($arraySum);
答案 1 :(得分:0)
这是我的贡献,使用array_walk
,并对合并规则做了一些假设:
$a = Array(
'price' => 123,
'category' => 'Fiction',
'bookname' => 'Any-Book',
'type' => 'Futuristic'
);
$b = Array (
'price' => 145,
'category' => 'Fantasy',
'bookname' => 'Any-Book',
'type' => 'Futuristic'
);
array_walk ($a,
function (&$v, $k, $comp) {
if (is_int($v)) {
$v = $v + $comp[$k];
} else {
if ($comp[$k] != $v) {
$v = "$v/" . $comp[$k];
}
}
}, $b);
var_dump($a);
假设是:如果数组$a
中的值为int
,则将其与$b
中的等值相加。如果该值不是int
,请将其与$b
中的等效值进行比较,如果匹配,请将其保留;否则与/
连接。