Php-concat数组

Php-concat数组,php,Php,我正在开发一个EDI阅读器,但我只是停留在PHP上,没有读取数据 我有下一个if,它读取数据并调用表上显示的函数 if ($padrao == "COARRI" && $sendername == "TPG"){ $a = fnc_processa_coarri(trim($arquivo)); $b = fnc_processa_coarri_header(trim($arquivo)); $merg =

我正在开发一个EDI阅读器,但我只是停留在PHP上,没有读取数据

我有下一个if,它读取数据并调用表上显示的函数

if ($padrao == "COARRI" && $sendername == "TPG"){
            $a = fnc_processa_coarri(trim($arquivo));
            $b = fnc_processa_coarri_header(trim($arquivo));
            $merg = array_merge($a, $b);
            prc_mostra_coarri($merg, $entry);
            //copy($path, $Uploaded.$entry);
            //unlink($path);                

}
我的fnc_processa_coarri返回一个数组,代码如下:

function fnc_processa_coarri($p_arquivo){
    $segmento = fnc_obter_linha_segmento ($p_arquivo, "UNB");
    $ini = strpos($p_arquivo,"EQD",0);
    $fim = strpos($p_arquivo,"NAD+CF",0);
    for( $i = 0; $i <= substr_count($p_arquivo, "EQD")-1; $i++ ) {
        $parte = substr($p_arquivo,$ini,$fim-$ini);

        if ($i == 0) {
            $a = ['Sender'=>[fnc_edi_recupera_compnte($segmento,2,0)],
                  'Recipient'=>[fnc_edi_recupera_compnte($segmento,3,0)],
                  'DateDoc'=>[fnc_edi_recupera_compnte($segmento,4,1)],
                  'TimeDoc'=>[fnc_edi_recupera_compnte($segmento,4,2)],
                  'IdSender'=>[fnc_edi_recupera_compnte($segmento,5,0)],

                  'PortLoad'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "LOC+9",5),2,1)],
                  'PortDischarge'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "LOC+11",6),2,1)],
                  'Operator'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "NAD+CF",6),2,0)],
                  'Agent'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "NAD+AG",6),2,0)],
                  'EquipQualif'=>[fnc_resgata_qualif_equipamento(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),1,0))],
                  'EquipIdent'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),2,0)],
                  'SizeType'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),3,1)],
                  'Category'=>[fnc_resgata_categoria(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),5,0))],
                  'Status'=>[fnc_resgata_status(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),6,0))],
                  'Booking'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RFF+BN",6),1,2)],
                  'BL'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RFF+BM",6),1,2)],
                  'OwnerCargo'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RFF+AAE",7),1,2)],
                  'ExecutionDate'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DTM+203",7),1,2)],
                  'PositionOnVessel'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "LOC+147",7),2,1)],               
                  'FinalDest'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "LOC+7",5),2,1)],
                  'TareWeight'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "MEA+AAE+T",9),3,2)],               
                  'TareWeightUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "MEA+AAE+T",9),3,1)],               
                  'GrossWeight'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "MEA+AAE+G",9),3,2)],              
                  'GrossWeightUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "MEA+AAE+G",9),3,1)],              
                  'Seal'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "SEL"),1,0)],                             
                  'TypeSeal'=>[fnc_resgata_tipo_lacre(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "SEL"),2,0))],
                  'IdealTemp'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TMP"),2,1)],
                  'IdealTempUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TMP"),2,2)],
                  'MinTemp'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RNG"),2,2)],
                  'MaxTemp'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RNG"),2,3)],
                  'MinMaxTempUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RNG"),2,1)],
                  'OverDmsFrontLen'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+5",5),2,2)],
                  'OverDmsFrontWid'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+5",5),2,3)],
                  'OverDmsFrontHei'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+5",5),2,4)],
                  'OverDmsFrontUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+5",5),2,1)],             
                  'OverDmsBackLen'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+6",5),2,2)],
                  'OverDmsBackWid'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+6",5),2,3)],
                  'OverDmsBackHei'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+6",5),2,4)],
                  'OverDmsBackUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+6",5),2,1)],              
                  'OverDmsRightLen'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+7",5),2,2)],
                  'OverDmsRightWid'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+7",5),2,3)],
                  'OverDmsRightHei'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+7",5),2,4)],
                  'OverDmsRightUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+7",5),2,1)],             
                  'OverDmsLeftLen'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+8",5),2,2)],
                  'OverDmsLeftWid'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+8",5),2,3)],
                  'OverDmsLeftHei'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+8",5),2,4)],
                  'OverDmsLeftUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+8",5),2,1)],              
                  'OverDmsGenLen'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+9",5),2,2)],
                  'OverDmsGenWid'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+9",5),2,3)],
                  'OverDmsGenHei'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+9",5),2,4)],                
                  'OverDmsGenUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+9",5),2,1)],                                               
                  'OverDmsExtLen'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+10",6),2,2)],
                  'OverDmsExtWid'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+10",6),2,3)],
                  'OverDmsExtHei'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+10",6),2,4)],
                  'OverDmsExtUnit'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+10",6),2,1)],              
                  'ModeTransp2'=>[fnc_resgata_modo_transp(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TDT+1",5),3,0))],             
                  'TranspMeans2'=>[fnc_resgata_transp_means(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TDT+1",5),4,0))],                           
                  'CarrierCode2'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TDT+1",5),8,1)],
                  'Responsible'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TDT+1",5),8,4)],
                  'Damage'=>[fnc_determina_dano(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DAM"),1,0))],
                  'DamageCode'=>[fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DAM"),5,0)],
                  ];        
        }
        else {
            array_push($a["Sender"], fnc_edi_recupera_compnte($segmento,2,0));  
            array_push($a["Recipient"], fnc_edi_recupera_compnte($segmento,3,0));   
            array_push($a["DateDoc"], fnc_edi_recupera_compnte($segmento,4,1)); 
            array_push($a["TimeDoc"], fnc_edi_recupera_compnte($segmento,4,2)); 
            array_push($a["IdSender"], fnc_edi_recupera_compnte($segmento,5,0));    
            array_push($a["Seq"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "BGM"),2,0));  
            array_push($a["FunctionMsg"], fnc_resgata_funcao_mensagem(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "BGM"),3,0)));                     
            array_push($a["PortLoad"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "LOC+9",5),2,1)); 
            array_push($a["PortDischarge"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "LOC+11",6),2,1));   
            array_push($a["Operator"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "NAD+CF",6),2,0));    
            array_push($a["Agent"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "NAD+AG",6),2,0));   
            array_push($a["EquipQualif"], fnc_resgata_qualif_equipamento(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),1,0)));  
            array_push($a["EquipIdent"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),2,0));   
            array_push($a["SizeType"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),3,1));     
            array_push($a["Category"], fnc_resgata_categoria(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),5,0)));      
            array_push($a["Status"], fnc_resgata_status(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "EQD"),6,0)));       
            array_push($a["Booking"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RFF+BN",6),1,2));     
            array_push($a["BL"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RFF+BM",6),1,2));      
            array_push($a["OwnerCargo"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RFF+AAE",7),1,2));     
            array_push($a["ExecutionDate"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DTM+203",7),1,2));              
            array_push($a["PositionOnVessel"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "LOC+147",7),2,1));               
            array_push($a["FinalDest"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "LOC+7",5),2,1));        
            array_push($a["TareWeight"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "MEA+AAE+T",9),3,2));       
            array_push($a["TareWeightUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "MEA+AAE+T",9),3,1));       
            array_push($a["GrossWeight"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "MEA+AAE+G",9),3,2));      
            array_push($a["GrossWeightUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "MEA+AAE+G",9),3,1));      
            array_push($a["Seal"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "SEL"),1,0));     
            array_push($a["TypeSeal"], fnc_resgata_tipo_lacre(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "SEL"),2,0)));     
            array_push($a["IdealTemp"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TMP"),2,1));        
            array_push($a["IdealTempUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TMP"),2,2));
            array_push($a["MinTemp"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RNG"),2,2));              
            array_push($a["MaxTemp"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RNG"),2,3));
            array_push($a["MinMaxTempUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "RNG"),2,1));
            array_push($a["OverDmsFrontLen"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+5",5),2,2));
            array_push($a["OverDmsFrontWid"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+5",5),2,3));
            array_push($a["OverDmsFrontHei"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+5",5),2,4));      
            array_push($a["OverDmsFrontUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+5",5),2,1));     
            array_push($a["OverDmsBackLen"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+6",5),2,2));
            array_push($a["OverDmsBackWid"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+6",5),2,3));
            array_push($a["OverDmsBackHei"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+6",5),2,4));
            array_push($a["OverDmsBackUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+6",5),2,1));      
            array_push($a["OverDmsRightLen"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+7",5),2,2));
            array_push($a["OverDmsRightWid"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+7",5),2,3));
            array_push($a["OverDmsRightHei"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+7",5),2,4));
            array_push($a["OverDmsRightUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+7",5),2,1));     
            array_push($a["OverDmsLeftLen"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+8",5),2,2));
            array_push($a["OverDmsLeftWid"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+8",5),2,3));
            array_push($a["OverDmsLeftHei"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+8",5),2,4));
            array_push($a["OverDmsLeftUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+8",5),2,1));      
            array_push($a["OverDmsGenLen"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+9",5),2,2));
            array_push($a["OverDmsGenWid"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+9",5),2,3));
            array_push($a["OverDmsGenHei"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+9",5),2,4));
            array_push($a["OverDmsGenUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+9",5),2,1));       
            array_push($a["OverDmsExtLen"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+10",6),2,2));
            array_push($a["OverDmsExtWid"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+10",6),2,3));
            array_push($a["OverDmsExtHei"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+10",6),2,4));
            array_push($a["OverDmsExtUnit"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DIM+10",6),2,1));
            array_push($a["ModeTransp2"], fnc_resgata_modo_transp(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TDT+1",5),3,0)));
            array_push($a["TranspMeans2"], fnc_resgata_transp_means(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TDT+1",5),4,0)));
            array_push($a["CarrierCode2"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TDT+1",5),8,1));
            array_push($a["Responsible"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "TDT+1",5),8,4));
            array_push($a["Damage"], fnc_determina_dano(fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DAM"),1,0)));
            array_push($a["DamageCode"], fnc_edi_recupera_compnte(fnc_obter_linha_segmento ($parte, "DAM"),5,0));
        }
        $ini = strpos($p_arquivo,"EQD",$fim);
        $fim = strpos($p_arquivo,"NAD+CF",$ini);
        $resultado = $a;
    }
    return $resultado;
}
这些行来自我的表,增加1取决于每个文件上的数据数量。(例如,在一个文件中,y得到了未定义的偏移量:5)

错误行如下所示:

<td>'.$p_array["Move"][$i].'</td>
<td>'.$p_array["VesselName"][$i].'</td>
<td>'.$p_array["Voyage"][$i].'</td>
<td>'.$p_array["CarrierCode1"][$i].'</td>
<td>'.$p_array["TypeId"][$i].'</td>
<td>'.$p_array["VesselId"][$i].'</td>
<td>'.$p_array["ModeTransp1"][$i].'</td>
<td>'.$p_array["TranspMeans1"][$i].'</td>
<td>'.$p_array["Arrival"][$i].'</td>
<td>'.$p_array["Departure"][$i].'</td>
。$p_数组[“移动”][$i]。'
“.$p_数组[“VesselName”][$i]。”
“.$p_数组[“航行”][$i]。”
“.$p_数组[“CarrierCode1”][$i]”
“.$p_数组[“TypeId”][$i]”
“.$p_数组[“VesselId”][$i]。”
“.$p_数组[“ModeTransp1”][$i]”
“.$p_数组[“TranspMeans1”][$i]”
“.$p_数组[“到达”][$i]”
“.$p_数组[“离开”][$i]。”
很抱歉,我写了这么长的文章,我是一个java爱好者,这些php代码我正在努力理解,但真的没有任何线索

更新


更具体地说,返回函数
fnc\u processa\u coarri
的数组有多个位置,而返回函数
fnc\u processa\u coarri\u头的数组有一个位置。我想要的是头函数的数据通过函数的每个位置重复
fnc\u processa\u coarri

最终得到了解决方案

如果我必须这样做的话

if ($padrao == "COARRI" && $sendername == "TPG"){
            $a = fnc_processa_coarri_header(trim($arquivo));
            $a = fnc_processa_coarri(trim($arquivo)) +$a;
            prc_mostra_coarri($a, $entry);          
}
修复我的函数
fnc\u processa\u coarri\u header
我必须修复FOR语句的值

for( $i = 0; $i <= substr_count($p_arquivo, "EQD")-1; $i++ ) {

用于($i=0;$i这不是问题的解决方案,只是一个编码建议:不是每次通过循环时都使用
if/else
,而是在循环前创建带有空子数组的结果数组,然后在循环中推送每个子数组。这样就不必重复那么多代码。也不必每次都执行
$resultado=$a;
我通过循环。只需在循环后返回$a;
。问题似乎是
fnc\u-processa\u-coarri
返回的子数组的大小与
fnc\u-processa\u-coarri\u头的大小不同。因此没有
$p\u-array[“Move”][1]
。查看
var\u-dump($merg)
@Barmar关于$resultado,是的,我忘了设置$a,我在测试另一个东西,忘了删除它。我做了var_转储,它只出现在数组(1){[0]=>string(8)“Descarga”}
有什么建议吗?
if ($padrao == "COARRI" && $sendername == "TPG"){
            $a = fnc_processa_coarri_header(trim($arquivo));
            $a = fnc_processa_coarri(trim($arquivo)) +$a;
            prc_mostra_coarri($a, $entry);          
}
for( $i = 0; $i <= substr_count($p_arquivo, "EQD")-1; $i++ ) {