Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;如果;不´;t工作-奇怪的字符串格式_Php_Xml_Formatting - Fatal编程技术网

Php &引用;如果;不´;t工作-奇怪的字符串格式

Php &引用;如果;不´;t工作-奇怪的字符串格式,php,xml,formatting,Php,Xml,Formatting,我在数据处理方面有奇怪的问题。我需要从用户表单中选择数据,并对其进行处理(生成xml)。 例如,数据如下所示: 2000年;交流电;1.60;5.5.执行设置-表示电压、电压类型、测试电流、测试时间、爬升时间、爬升时间和用户提示 我想根据最后一个值决定如何组装xml文件。如果为零,则会有较短的xml程序集,而当有文本时,则会有xml标记的用户提示程序集 因此,我将输入分解为数组,并通过以下方式检查值: If (empty($xplodline[6]) == true) {do this;} el

我在数据处理方面有奇怪的问题。我需要从用户表单中选择数据,并对其进行处理(生成xml)。 例如,数据如下所示:

2000年;交流电;1.60;5.5.执行设置-表示电压、电压类型、测试电流、测试时间、爬升时间、爬升时间和用户提示

我想根据最后一个值决定如何组装xml文件。如果为零,则会有较短的xml程序集,而当有文本时,则会有xml标记的用户提示程序集

因此,我将输入分解为数组,并通过以下方式检查值:

If (empty($xplodline[6]) == true) {do this;}
else {do that;}
问题是,即使$xplodline[6]中有0,它也总是只做“那个”,而从不做“这个”

所以我把echo$xplodline[6];进入{做那个;}去看看发生了什么。 零被回显(当这个动作在循环中时,我从循环中得到其他$xplodline[6]),我看到$xplodline[6]中的零和下一个$xplodline[6]迭代之间有一个空格。当我查看带有这些值的用户表单或临时清理文件时,它们之间没有空格。它从哪里来

当我将另一个数组除法器放入用户窗体中以使其生效时;0; 并没有空格,If语句运行良好

以下是临时清理文件中的原始数据:

2000;AC;1;60;5;5;0
2000;AC;1;60;5;5;Set your cables for X10
2000;AC;1;60;5;5;Set your cables for X10 
有什么想法吗

好的,代码如下:

$stringer = fopen($tempfile, "r");
while(!feof($stringer)){
$oneline = fgets($stringer) ;
$xplodline = explode(";",$oneline) ;
$range01 = "gross" ;
$rampup = "100" ;
$rampdown = "100" ;
$rampupfunction = "false" ;
$rampdownfunction = "false" ;
$currentrange = "_1mA" ;
$assy01 = "1" ;
if ($xplodline[0] >= 3000) {$range01 = "gross" ;}
else {$range01 = "klein" ;}
if (empty($xplodline[4]) == false) {$rampupfunction = "true" ; $rampup = round($xplodline[0] / $xplodline[4]) ;}
if (empty($xplodline[5]) == false) {$rampdownfunction = "true" ;$rampdown = round($xplodline[0] / $xplodline[5]) ;}
if ($xplodline[2] < 1) {$currentrange = "_1mA";}
if ($xplodline[2] >= 1 && $xplodline[2] < 10) {$currentrange = "_10mA";}
if ($xplodline[2] >= 10 && $xplodline[2] < 100) {$currentrange = "_100mA";}
if (empty($xplodline[6]) == true) {$assy01 = $xmltestbegin.$xplodline[0]."V ".$xplodline[1].$xmltype.$xplodline[1].$xmlrange.$range01.$xmlrampup.$rampupfunction.$xmlrampdown.$rampdownfunction.$xmlcurrentrange.$currentrange.$xmlvoltage.$xplodline[0].$xmlrampupspeed.$rampup.$xmlrampdownspeed.$rampdown.$xmltesttime.$xplodline[3].$xmlcurrent.$xplodline[2].$xmlballast ;}
else {$assy01 = $xmlpromptbegin.$xplodline[6].$xmlpromptend.$xmltestbegin.$xplodline[0]."V ".$xplodline[1].$xmltype.$xplodline[1].$xmlrange.$range01.$xmlrampup.$rampupfunction.$xmlrampdown.$rampdownfunction.$xmlcurrentrange.$currentrange.$xmlvoltage.$xplodline[0].$xmlrampupspeed.$rampup.$xmlrampdownspeed.$rampdown.$xmltesttime.$xplodline[3].$xmlcurrent.$xplodline[2].$xmlballast ;}
file_put_contents ( $filename, $assy01, FILE_APPEND );  
}
fclose($stringer);
$stringer=fopen($tempfile,“r”);
而(!feof($stringer)){
$oneline=fgets($stringer);
$xplodline=explode(“;”,$oneline);
$range01=“总额”;
$rampup=“100”;
$rampdown=“100”;
$rampupfunction=“false”;
$rampdownfunction=“false”;
$currentrange=“_1mA”;
$assy01=“1”;
如果($xplodline[0]>=3000){$range01=“gross”;}
else{$range01=“klein”;}
if(empty($xplodline[4])==false){$rampupfunction=“true”;$rampup=round($xplodline[0]/$xplodline[4]);}
if(empty($xplodline[5])==false){$rampdownfunction=“true”;$rampdown=round($xplodline[0]/$xplodline[5]);}
如果($xplodline[2]<1){$currentrange=“_1mA”;}
如果($xplodline[2]>=1&&$xplodline[2]<10){$currentrange=“\u 10mA”}
如果($xplodline[2]>=10&&$xplodline[2]<100){$currentrange=“\u 100mA”}
if(empty($xplodline[6])==true){$assy01=$xmltestbegin.$xplodline[0]。'V..$xplodline[1]。$xplodline[1]。$xmlrange.$range01.$xmlramppup.$ramppupfunction.$xmlramppdown.$ramppdown function.$xmlcurrentrange.$currentrange.$xmlvoltage.$xplodlodline[0]。$xmlramppupspeed.$ramppup.$xmldrupspeed.$ramppdown.$ramppdown.$rampdown.$xmltesttime.$xplodlopline[3.$xmlcurrent.$xplodline[2].$xmlclastallard;}
else{$assy01=$XploptBegin.$XploptLine[6]。$xmlpromptend.$xmltestbegin.$XploLine[0]。“V”..$XploLine[1]。$xmlrange.$range01.$XmlRamptUp.$RamptFunction.$XmlRamptDownFunction.$xmlcurrentrange.$XploLine[0]。$xmlrampupspeed.$RamptUp.$RamptUp.$RamptTime.$XploLine[3].$xmlcurrent.$xplodline[2].$xmlclastallard;}
文件内容($filename,$assy01,文件附加);
}
fclose($stringer);
我的函数正常工作,除最后一个外,每个If都正常工作…

读取长度为-1字节、换行符(包含在返回值中)或EOF(以先到者为准)时,读取结束。如果未指定长度,它将一直从流中读取,直到到达行的末尾

简而言之,在最后一个数组条目中总是会有一个换行符。通过这样做来清理它

$oneline = rtrim(fgets($stringer));
你也可以考虑:

$stringer = fopen($tempfile, "r");
while(!feof($stringer)){
    $xplodline = fgetcsv($stringer,0,";"); 
    //Rest of code as normal
这将允许PHP将该文件作为CSV样式的文件处理。

From

读取长度为-1字节、换行符(包含在返回值中)或EOF(以先到者为准)时,读取结束。如果未指定长度,它将一直从流中读取,直到到达行的末尾

简而言之,在最后一个数组条目中总是会有一个换行符。通过这样做来清理它

$oneline = rtrim(fgets($stringer));
你也可以考虑:

$stringer = fopen($tempfile, "r");
while(!feof($stringer)){
    $xplodline = fgetcsv($stringer,0,";"); 
    //Rest of code as normal

这将使PHP将该文件作为CSV样式的文件处理。

文本太多,代码太少……@apokryfos
0
为空<代码>以下内容被认为是空的:…“0”(0作为字符串)。请提供一个可复制的示例@chris85你是对的,尽管当涉及到尾随空格时仍然令人悲伤。是的,var_dumping
$xplodline[6]
可能会很有用。文本太多,代码太少……@apokryfos
0
是空的<代码>以下内容被认为是空的:…“0”(0作为字符串)。请提供一个可复制的示例@chris85你是对的,尽管当涉及到尾随空格时,这仍然是一个令人悲伤的来源。是的,var_dumping
$xplodline[6]
可能会被证明是有用的。