本帖最后由 xuzuning 于 2014-09-01 10:34:42 编辑

解决方案 »

  1.   

    class前面少了个"  }  " 
      

  2.   

    看一下 $file="/usr/local/lte/em100cfg".$ethnumber; 的内容按理说 $qosarry 的 4 个元素的值都是一样的才对(因为对象总是以引用传递的)
      

  3.   

    文件里面的内容我贴上来吧
    qos1_en=yesqos1_cid=2qos1_packet_filter_identifier=1qos1_evaluation_precedence_index=1qos1_source_address=192.168.1.1qos1_subnet_mask=255.255.255.255qos1_protocol_number=qos1_destination_port_range=qos1_source_port_range=qos1_direction=3qos1_QCI=4qos1_DL_GBR=1024qos1_UL_GBR=1024qos1_DL_MBR=2048qos1_UL_MBR=2048qos1_cfg_result=qos2_en=使能qos2_cid=idqos2_packet_filter_identifier=tft标号qos2_evaluation_precedence_index=tft优先级qos2_source_address=原地值qos2_subnet_mask=qos2_protocol_number=协议号qos2_destination_port_range=目的端口范围qos2_source_port_range=远端口范围qos2_direction=方向qos2_QCI=qciqos2_DL_GBR=下行GBRqos2_UL_GBR=上行qos2_DL_MBR=qos2_UL_MBR=qos2_cfg_result=1&0 1=成功qos3_en=qos3_cid=qos3_packet_filter_identifier=qos3_evaluation_precedence_index=qos3_source_address=qos3_subnet_mask=qos3_protocol_number=qos3_destination_port_range=qos3_source_port_range=qos3_direction=qos3_QCI=qos3_DL_GBR=qos3_UL_GBR=qos3_DL_MBR=qos3_UL_MBR=qos3_cfg_result=qos4_en=qos4_cid=qos4_packet_filter_identifier=qos4_evaluation_precedence_index=qos4_source_address=qos4_subnet_mask=qos4_protocol_number=qos4_destination_port_range=qos4_source_port_range=qos4_direction=qos4_QCI=qos4_DL_GBR=qos4_UL_GBR=qos4_DL_MBR=qos4_UL_MBR=qos4_cfg_result=
      

  4.   

    我试过只循环到2   就是有值的两个  这时候qosarry是正常的 但是只要把 3 加进去就错了 
      

  5.   

    这不就对了吗?
    数据中 gos3_xxxx、gos4_xxxx 都是空的
    所以 $qosarry 中也就空了把 array_unshift($qosarry,$qos);
    改成 array_unshift($qosarry, clone $qos);
    就正确了
      

  6.   

    其实你把函数写成这样比较好function getqos_one($ethnumber)
    {
    $file="/usr/local/lte/em100cfg".$ethnumber;
    $list = file($file, FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES);
    $qosarry=array(); foreach($list as $r) {
    list($key, $value) = explode('=', $r);
    preg_match('/(\D+)(\d+)(.+)/', $key, $m);
    $key = $m[1] . ($m[3] != '_en' ? $m[3] : '');
    $i = $m[2];
    if(! isset($gosarray[$i])) $gosarray[$i] = new qosclass();
    $gosarray[$i]->$key = $value; }
    return $gosarray;
    }