当前位置: 代码迷 >> PHP >> 数组取值解决思路
  详细解决方案

数组取值解决思路

热度:248   发布时间:2016-04-28 18:34:46.0
数组取值
Array
(
    [iso.3.6.1.4.1.2021.4.1.0] => INTEGER: 0
    [iso.3.6.1.4.1.2021.4.2.0] => STRING: "swap"
    [iso.3.6.1.4.1.2021.4.3.0] => INTEGER: 16777208
    [iso.3.6.1.4.1.2021.4.4.0] => INTEGER: 16777208
    [iso.3.6.1.4.1.2021.4.5.0] => INTEGER: 16324040
    [iso.3.6.1.4.1.2021.4.6.0] => INTEGER: 4484096
 
    [iso.3.6.1.4.1.2021.9.1.6.1] => INTEGER: 1032088
    [iso.3.6.1.4.1.2021.9.1.6.2] => INTEGER: 458942624
    [iso.3.6.1.4.1.2021.9.1.6.3] => INTEGER: 8162020
    [iso.3.6.1.4.1.2021.9.1.6.4] => INTEGER: 99150
    [iso.3.6.1.4.1.2021.9.1.6.5] => INTEGER: 3096336
    [iso.3.6.1.4.1.2021.9.1.6.6] => INTEGER: 1032088
  
)

怎么取键值是iso.3.6.1.4.1.2021.9.1.6.* 的值  就是把前面 键值是iso.3.6.1.4.1.2021.9.1.6的所有值 加起来
------解决方案--------------------
$arr=array(
    'iso.3.6.1.4.1.2021.4.1.0' => '0',
    'iso.3.6.1.4.1.2021.4.2.0' => 'swap',
    'iso.3.6.1.4.1.2021.4.3.0' => '16777208',
    'iso.3.6.1.4.1.2021.4.4.0' => '16777208',
    'iso.3.6.1.4.1.2021.4.5.0' => '16324040',
    'iso.3.6.1.4.1.2021.4.6.0' => '4484096',
    'iso.3.6.1.4.1.2021.9.1.6.1' => '1032088',
    'iso.3.6.1.4.1.2021.9.1.6.2' => '458942624',
    'iso.3.6.1.4.1.2021.9.1.6.3' => '8162020',
    'iso.3.6.1.4.1.2021.9.1.6.4' => '99150',
    'iso.3.6.1.4.1.2021.9.1.6.5' => '3096336',
    'iso.3.6.1.4.1.2021.9.1.6.6' => '1032088'
);
$num=0;
foreach($arr as $k=>$v){
if(version_compare($k, 'iso.3.6.1.4.1.2021.9.1.6.0', '>')){
$num+=$v;
}
}
echo $num;
/*
472364306
*/

------解决方案--------------------
$ar = 你的数组
$res = array();
foreach($ar as $k=>$v){
    if(strpos($k, 'iso.3.6.1.4.1.2021.9.1.6') !== false){
     $t  = explode(': ', $v);
    $res[] = $t[1];
}
}
echo array_sum($res);

------解决方案--------------------
$ar = array (
  'iso.3.6.1.4.1.2021.4.1.0' => 'INTEGER: 0',
  'iso.3.6.1.4.1.2021.4.2.0' => 'STRING: "swap"',
  'iso.3.6.1.4.1.2021.4.3.0' => 'INTEGER: 16777208',
  'iso.3.6.1.4.1.2021.4.4.0' => 'INTEGER: 16777208',
  'iso.3.6.1.4.1.2021.4.5.0' => 'INTEGER: 16324040',
  'iso.3.6.1.4.1.2021.4.6.0' => 'INTEGER: 4483856',
  'iso.3.6.1.4.1.2021.4.11.0' => 'INTEGER: 21261064',
  'iso.3.6.1.4.1.2021.4.12.0' => 'INTEGER: 16000',
  'iso.3.6.1.4.1.2021.4.14.0' => 'INTEGER: 72720',
  'iso.3.6.1.4.1.2021.4.15.0' => 'INTEGER: 11089928',
  'iso.3.6.1.4.1.2021.4.100.0' => 'INTEGER: 0',

  'iso.3.6.1.4.1.2021.9.1.6.1' => 'INTEGER: 1032088',
  'iso.3.6.1.4.1.2021.9.1.6.2' => 'INTEGER: 458942624',
  'iso.3.6.1.4.1.2021.9.1.6.3' => 'INTEGER: 8162020',
  'iso.3.6.1.4.1.2021.9.1.6.4' => 'INTEGER: 99150',
  'iso.3.6.1.4.1.2021.9.1.6.5' => 'INTEGER: 3096336',
  'iso.3.6.1.4.1.2021.9.1.6.6' => 'INTEGER: 1032088',
);

$num = 0;
foreach($ar as $k=>$v){
  if($k >= 'iso.3.6.1.4.1.2021.9.1.6.1'){
    strtok($v, ':');
    $num += strtok('');
  }
}
echo $num;
  相关解决方案