Array
(
    [1] => 3
    [2] => 3
    [3] => 4
    [4] => 4
    [5] => 4
    [6] => 3
    [7] => 4
    [8] => 4
    [10] => 4
    [11] => 4
    [12] => 5
    [13] => 4
    [14] => 1
    [16] => 3
    [17] => 2
    [18] => 3
    [19] => 4
    [22] => 1
    [23] => 2
    [24] => 4
    [25] => 3
    [26] => 3
    [27] => 2
    [28] => 3
    [29] => 3
    [30] => 4
    [31] => 4
    [32] => 4
    [33] => 4
    [34] => 5
    [35] => 4
    [36] => 3
    [37] => 4
    [38] => 4
    [39] => 4
    [40] => 3
    [41] => 3
    [42] => 3
    [43] => 3
    [44] => 2
    [46] => 4
    [49] => 4
    [50] => 1
    [51] => 1
    [53] => 1
    [55] => 3
    [56] => 4
    [57] => 4
    [58] => 4
    [59] => 4
    [60] => 3
    [61] => 3
    [62] => 4
    [63] => 5
    [64] => 4
    [65] => 1
    [66] => 2
    [67] => 3
)public function countOfconstitutionType ( $arrayOptionsId ) {$strFractionType = ""; 
$resultFraction = ""; 
if ( isset($arrayOptionsId) && is_array($arrayOptionsId) && !empty($arrayOptionsId) ) {
$pingheFraction = "";
foreach( $arrayOptionsId as $key=>$value ) {
//echo "key:".$key."--".$value."<br>";
print_r($arrayOptionsId);
if ( $key == 17 || $key == 18 || $key == 19 || $key == 5 || $key == 13 || $key == 22 || $key == 23 ) {

$yangxFraction  +=  $value ;
echo "111:".$yangxFraction."<br>";
}if ( $key == 24 || $key == 25 || $key == 26 || $key == 27 || $key == 28 || $key == 29 || $key == 30 || $key == 31 ) {

$yinxFraction  +=  $value ;}if ( $key == 2 || $key == 10 || $key == 11 || $key == 12 || $key == 13 || $key == 14 || $key == 3 || $key == 16 ) {

$qixFraction  +=  $value ;}if ( $key == 32 || $key == 33 || $key == 34 || $key == 35 || $key == 36 || $key == 37 || $key == 38 || $key == 39 ) {

$tansFraction  +=  $value ;}if ( $key == 40 || $key == 41 || $key == 42 || $key == 43 || $key == 44 || $key == 45 || $key == 46 ) {
$wenrFraction  +=  $value ;}if ( $key == 47 || $key == 48 || $key == 49 || $key == 50 || $key == 51 || $key == 8 || $key == 53 ) {

$xuyFraction  +=  $value ;}if ( $key == 61 || $key == 62 || $key == 63 || $key == 64 || $key == 65 || $key == 66 || $key == 67 ) {

$tedFraction  +=  $value ;}if ( $key == 4 || $key == 55 || $key == 56 || $key == 57 || $key == 58 || $key == 59 || $key == 60 ) {

$qiyFraction  +=  $value ;}if ( $key == 1 || $key == 2 || $key == 3 || $key == 4 || $key == 5 || $key == 6 || $key == 7 || $key == 8 ) {
if ( ( $key == 2 || $key == 3 || $key == 4 || $key == 5 || $key == 7 || $key == 8 ) && $value == 1 ) { $value = 5 ;
} if ( ( $key == 2 || $key == 3 || $key == 4 || $key == 5 || $key == 7 || $key == 8 ) && $value == 2 ) { $value = 4 ;
} if ( ( $key == 2 || $key == 3 || $key == 4 || $key == 5 || $key == 7 || $key == 8 ) && $value == 3 ) { $value = 3 ;
} if ( ( $key == 2 || $key == 3 || $key == 4 || $key == 5 || $key == 7 || $key == 8 ) && $value == 4 ) { $value = 2 ;
} if ( ( $key == 2 || $key == 3 || $key == 4 || $key == 5 || $key == 7 || $key == 8 ) && $value == 5 ) { $value = 1 ;
} $pingheFraction  +=  $value ;}$resultFraction = $yangxFraction."#".$yinxFraction."#".$qixFraction."#".$tansFraction."#".$wenrFraction."#".$xuyFraction."#".$tedFraction."#".$qiyFraction."#".$pingheFraction ;return $resultFraction;
}
}
}

解决方案 »

  1.   

    因为你的数组下标是从1开始,而foreach的key是从0开始
      

  2.   

    另外你的$resultFraction = $yangxFraction."#".$yinxFraction."#".$qixFraction."#".$tansFraction."#".$wenrFraction."#".$xuyFraction."#".$tedFraction."#".$qiyFraction."#".$pingheFraction ;return $resultFraction;写在了循环里面,,,,,,,,所以
      

  3.   

    无事帮你修改了一下程序<?
    function countOfconstitutionType ( $arrayOptionsId ) { $strFractionType = "";
    $resultFraction = "";
    if ( isset($arrayOptionsId) && is_array($arrayOptionsId) && !empty($arrayOptionsId) ) 
    {
    $pingheFraction = "";
    $k=1;
    foreach( $arrayOptionsId as $key=>$value ) 
    {
    if ( in_array($k,array(17,18,19,5,13,22,23)) )
    {
    $yangxFraction  +=  $value ;
    echo "111:".$yangxFraction."<br>";
    }
    if (in_array($k,range(24,31)))
    {
    $yinxFraction  +=  $value ;
    }
    if (in_array($k,array(2,10,11,12,13,14,16,3)))
    {
    $qixFraction  +=  $value ;
    }
    if (in_array($k,range(32,39)))
    {
    $tansFraction  +=  $value ;
    }
    if (in_array($k,range(40,46))) 
    {
    $wenrFraction  +=  $value ;
    }
    if (in_array($k,array(8,47,48,49,50,51,53)))
    {
    $xuyFraction  +=  $value ;
    }
    if (in_array($k,range(61,67)))
    {
    $tedFraction  +=  $value ;
    }
    if (in_array($k,array(4,55,56,57,58,59,60)))
    {
    $qiyFraction  +=  $value ;
    }
    if (in_array($k,range(1,8))) 
    {
    if ( in_array($k,range(2,3,4,5,7,8))&&$value == 1 ) 
    {
    $value = 5 ;
    }
    if ( in_array($k,range(2,3,4,5,7,8))&& $value == 2 ) 
    {
    $value = 4 ;
    }
    if ( in_array($k,range(2,3,4,5,7,8)) && $value == 3 ) 
    {
    $value = 3 ;
    }
    if ( in_array($k,range(2,3,4,5,7,8)) && $value == 4 ) 
    {
    $value = 2 ;
    }
    if ( in_array($k,range(2,3,4,5,7,8))&& $value == 5 ) 
    {
    $value = 1 ;
    }
    $pingheFraction  +=  $value ;
    }
    $k++;
    }
    return $yangxFraction."#".$yinxFraction."#".$qixFraction."#".$tansFraction."#".$wenrFraction."#".$xuyFraction."#".$tedFraction."#".$qiyFraction."#".$pingheFraction ;
     
    }
    else 
    {
    return false;
    }
    }
    ?>
      

  4.   

    20#26#28#32#18#11#22#26#19....    $pingheFraction  +=  $value ;
      } //<== 这里少了个 }
    }$resultFraction = $yangxFraction."#".$yinxFraction."#".$qixFraction."#".$tansFraction."#".$wenrFraction."#".$xuyFraction."#".$tedFraction."#".$qiyFraction."#".$pingheFraction ;return $resultFraction;
    } <== 这里多了个 } 请删去
    }
    }
      

  5.   

    看到这个代码 内牛满面啊...提个建议
        if ( ( $key == 2 || $key == 3 || $key == 4 || $key == 5 || $key == 7 || $key == 8 ) && $value == 5 ) {        $value = 1 ;
        }修改成
    $array=array(2,3,4,5,7,8,);
    $array2=array(5);
    if (in_array($key,$array)&&in_array($value,$array2)){
     $value = 1 ;
    }
    会不会好很多?起码效率上去了吧...没仔细看 应该还有能改的地方。
      

  6.   

    如果你运行一下他的代码,就会发现
    foreach( $arrayOptionsId as $key=>$value ) {
    //echo "key:".$key."--".$value."<br>";
    print_r($arrayOptionsId);只被执行了一次
    显然是循环被以外终止如果你不打算运行他的代码,就应该询问他都输出了什么 
      

  7.   

    刚吃饱饭,也帮你修改了一下,话说几年前我也这么写的呵呵~
    <?php
    function countOfconstitutionType ( $arrayOptionsId ) {
    $strFractionType = "";
    $resultFraction = "";
    if ( isset($arrayOptionsId) && is_array($arrayOptionsId) && !empty($arrayOptionsId)){
    $pingheFraction = "";
    $k=1;
    $condition1=array(
    array(17,18,19,5,13,22,23),
    range(24,31),
    array(2,10,11,12,13,14,16,3),
    range(32,39),
    range(40,46),
    array(8,47,48,49,50,51,53),
    range(61,67),
    array(4,55,56,57,58,59,60),
    );
    foreach( $arrayOptionsId as $key=>$value ) {
    foreach($condition1 as $ckey=>$cval){
    if(in_array($k,$cval)) {
    $var[$ckey]+=$value ;
    }
    };
    if (in_array($k,range(1,8))){
    if (in_array($k,array(2,3,4,5,7,8))&& in_array($value,range(1,5))){
    $value = 6-$value ;
    }
    $pingheFraction  +=  $value ;
    }
    $k++;
    }
    return implode('#',$var)."#".$pingheFraction ;
    }
    else{
    return false;
    }
    }
    ?>
      

  8.   

    麻烦兄弟给看看计算结果有问题啊,举例
    Array ( [1] => 5 [2] => 1 [3] => 1 [4] => 2 [5] => 1 [6] => 5 [7] => 2 [8] => 2 [10] => 1 [11] => 1 [12] => 1 [13] => 1 [14] => 1 [16] => 1 [17] => 1 [18] => 1 [19] => 1 [22] => 1 [23] => 3 [24] => 3 [25] => 2 [26] => 4 [27] => 1 [28] => 2 [29] => 2 [30] => 3 [31] => 3 [32] => 1 [33] => 1 [34] => 1 [35] => 5 [36] => 2 [37] => 4 [38] => 4 [39] => 3 [40] => 4 [41] => 2 [42] => 4 [43] => 2 [44] => 3 [46] => 1 [49] => 1 [50] => 1 [51] => 1 [53] => 1 [55] => 2 [56] => 2 [57] => 2 [58] => 1 [59] => 2 [60] => 4 [61] => 2 [62] => 2 [63] => 2 [64] => 2 [65] => 2 [66] => 1 [67] => 4 )
    在array(17,18,19,5,13,22,23),这个数组里面我手工相加1+1+1+1+1+1+3=9,可是程序算出来4#14#18#29#39#64#11#107#-25 使。
      

  9.   


    Array
    (
        [1] => 5
        [2] => 1
        [3] => 1
        [4] => 2
        [5] => 1
        [6] => 5
        [7] => 2
        [8] => 2
        [10] => 1
        [11] => 1
        [12] => 1
        [13] => 1
        [14] => 1
        [16] => 1
        [17] => 1
        [18] => 1
        [19] => 1
        [22] => 1
        [23] => 3
        [24] => 3
        [25] => 2
        [26] => 4
        [27] => 1
        [28] => 2
        [29] => 2
        [30] => 3
        [31] => 3
        [32] => 1
        [33] => 1
        [34] => 1
        [35] => 5
        [36] => 2
        [37] => 4
        [38] => 4
        [39] => 3
        [40] => 4
        [41] => 2
        [42] => 4
        [43] => 2
        [44] => 3
        [46] => 1
        [49] => 1
        [50] => 1
        [51] => 1
        [53] => 1
        [55] => 2
        [56] => 2
        [57] => 2
        [58] => 1
        [59] => 2
        [60] => 4
        [61] => 2
        [62] => 2
        [63] => 2
        [64] => 2
        [65] => 2
        [66] => 1
        [67] => 4
    )算出来结果都不对,兄弟