PHP数组 key=> value中的value计算

WBOY
发布: 2016-06-06 20:28:33
原创
1983 人浏览过

需求是这样的。
有2个二维数组a和b。

<code>$a = array(
     array('score' => 2, 'name' => 'wangsan'));
    
$b = array(
     array('score' => 3, 'name' => 'lisi'),
    array('score' => 4, 'name' => 'wangsan'));

</code>
登录后复制
登录后复制

如果数组a中的name与数组b中的name相等,那么用b数组对应的score减掉a数组对应的score(也就是4-2),再把score和name赋给新的数组,如果数组a中的key(比如name)在数组b中不存在,那么就把数组b的值赋值给新的数组,反之如果数组a比数组b少了一个key(比如该例子的'name'=>'lisi'),那么就把该数组(相当于二维数组的第二个数组)赋值给新数组。
这个应该如何实现呢,先谢过了!

回复内容:

需求是这样的。
有2个二维数组a和b。

<code>$a = array(
     array('score' => 2, 'name' => 'wangsan'));
    
$b = array(
     array('score' => 3, 'name' => 'lisi'),
    array('score' => 4, 'name' => 'wangsan'));

</code>
登录后复制
登录后复制

如果数组a中的name与数组b中的name相等,那么用b数组对应的score减掉a数组对应的score(也就是4-2),再把score和name赋给新的数组,如果数组a中的key(比如name)在数组b中不存在,那么就把数组b的值赋值给新的数组,反之如果数组a比数组b少了一个key(比如该例子的'name'=>'lisi'),那么就把该数组(相当于二维数组的第二个数组)赋值给新数组。
这个应该如何实现呢,先谢过了!

这里还需要明确一点:如果$a中的数组某个key=>value在a中存在,但数组b中不存在的情况的情况,新数组是保留$a的这个key=>value,还是新数组不进行任何操作。$a里面的socre 不知道是打错了还是其他,下面都改成score了。

<code>$a = array(
    array('score' => 2, 'name' => 'wangsan'),
    array('score' => 2, 'name' => 'wasdf')
);

$b =array(
        array('score' => 3, 'name' => 'lisi'),
        array('score' => 4, 'name' => 'wangsan')
    );

$newArray = array();
foreach($b as $k=>$v){
    $newArray[$v['name']]=$v['score'];
}

foreach($a as $k=>$v){
    if (in_array($v['name'], array_keys($newArray))) {
        $newArray[$v['name']]=$newArray[$v['name']]-$v['score'];
    }
}
$ret=array();
foreach ($newArray as $key => $value) {
    $ret[] = array('name'=>$key,'score'=>$value);
}

var_dump($ret);</code>
登录后复制

<code>$a = array(
    array('socre' => 2, 'name' => 'wangsan')
);

$b =
    array(
        array('score' => 3, 'name' => 'lisi'),
        array('score' => 4, 'name' => 'wangsan')
    );

$newArray = array();

//如果数组a中的name与数组b中的name相等,那么用b数组对应的score减掉a数组对应的score(也就是4-2),
//再把score和name赋给新的数组,如果数组a中的key(比如name)在数组b中不存在,那么就把数组b的值赋值给新的数组,
//反之如果数组a比数组b少了一个key(比如该例子的'name'=>'lisi'),
//那么就把该数组(相当于二维数组的第二个数组)赋值给新数组。
//这个应该如何实现呢,先谢过了!


foreach ($b as $bValue) {
    foreach ($a as $avalue) {
        if ($avalue['name'] == $bValue['name']) {
            $arr = array(
                'score' => intval($bValue['score']) - intval($avalue['socre']),
                'name' => $bValue['name']
            );
            array_push($newArray, $arr);
        } else {
            array_push($newArray, $bValue);
        }
    }
}


var_dump($newArray);
//output:
array(2) { [0]=> array(2) { ["score"]=> int(3) ["name"]=> string(4) "lisi" } [1]=> array(2) { ["score"]=> int(2) ["name"]=> string(7) "wangsan" } }</code>
登录后复制

看截图
PHP数组 key=> value中的value计算

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!