PHP数组 key=> value中的value计算
Jun 06, 2016 pm 08:28 PM
需求是这样的。
有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>
看截图

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법
