Home  >  Article  >  Backend Development  >  PHP数组 key=> value中的value计算

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

WBOY
WBOYOriginal
2016-06-06 20:28:331980browse

需求是这样的。
有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计算

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:opcache缓存疑问Next article:PHP和MYSQL的算法疑问