Php-concat数组
我正在开发一个EDI阅读器,但我只是停留在PHP上,没有读取数据 我有下一个if,它读取数据并调用表上显示的函数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 =
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++ ) {