如何在.txt文件中排除空结果并在php中显示它们?
我读取了包含以下值的csv文件:如何在.txt文件中排除空结果并在php中显示它们?,php,csv,fwrite,Php,Csv,Fwrite,我读取了包含以下值的csv文件: ; ;WH;391;M;9353970157191;A1124;0010;TU;1; ;7/1/2019;0;0; ; ;WH;391;M;9353970157214;A1119;0090;TU;1; ;7/1/2019;0;0; .... 最后我得到一个.txt文件,如下所示: MMXC1_|A0391|9353970395487|0|0 MMXC1_|A0391| |1|0 //$SKU_EAN NULL MMXC1_|
; ;WH;391;M;9353970157191;A1124;0010;TU;1; ;7/1/2019;0;0;
; ;WH;391;M;9353970157214;A1119;0090;TU;1; ;7/1/2019;0;0;
....
最后我得到一个.txt文件,如下所示:
MMXC1_|A0391|9353970395487|0|0
MMXC1_|A0391| |1|0 //$SKU_EAN NULL
MMXC1_|A0391|9353970394879|4|2
...
但有时$SKU\u EAN是空的,因为它没有相应的SKU\u代码
我想从我的.txt文件中排除$SKU_EAN为空的行,并用SKU_代码和csv文件中相应行的编号在屏幕上显示它们,我该怎么做
$resultat = mysqli_query($bdd, "SELECT trim(concat(concat(SKU_ITEM_VARIANT,'_'),trim(SKU_SIZE)))as sku_code , SKU_EAN FROM dwh_dev.dwh_d_sku");
while ($donnees[] = mysqli_fetch_assoc($resultat)) {
// var_dump($donnees); //array(1) { [0]=> array(2) { ["sku_code"]=> string(13) "A1101_0090_TU" ["SKU_EAN"]=> string(13) "9346799868270" } } array(2) { [0]=> array(2) { ["sku_code"]=> string(13) "A1101_0090_TU" ["SKU_EAN"]=> string(13) "9346799868270" }....
}
$constante = "MMXC1_";
$temp = array_column($datas_mag, 'MAGCOD', 'MAGAS400');
$temp2 = array_column($donnees, 'SKU_EAN', 'sku_code');
if (($handle = fopen("$nomcsv", "r")) !== FALSE) {
$firstLine = true;
while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE)
{
if(!$firstLine) {
$EAN = 'A'.$temp[$data[3]];
$SKU_EAN = $temp2[$data[6].'_'.$data[7].'_'.$data[8]];
var_dump($SKU_EAN); //string(13) "9353970395487" string(13) "9346799046166" NULL NULL string(13) "9346799046756"...
$data_final[] = $constante.'|'.$EAN.'|'.$SKU_EAN.'|'.$data[12].'|'.$data[13];
var_dump($data_final); //array(1) { [0]=> string(30) "MMXC1_|A0391|9353970395487|0|0" }
}
$firstLine = false;
}
}
$cheminfile = "//alcyons/IT/PhotoShoot/retail/CSV/TXT_Finaux/MMX".date('His').".txt";
$fp = fopen("$cheminfile", "w");
foreach($data_final as $data){
fwrite($fp,$data."\n");
}
fclose($fp);
试试这个
我假设您对$SKU_EAN
的评论是单独的示例值,因此添加以下行应该跳过该值为null的迭代
if(is_null($SKU_EAN)) continue;
完整代码:
$i = 1;
while(($data = fgetcsv($handle, 1000000, ";")) !== FALSE) {
$i++;
if(!$firstLine) {
$EAN = 'A'.$temp[$data[3]];
$SKU_EAN = $temp2[$data[6].'_'.$data[7].'_'.$data[8]];
if(is_null($SKU_EAN)) {
echo 'Can\'t find SKU_EAN for iteration number: ' . $i . '<br />';
continue;
}
$data_final[] = $constante.'|'.$EAN.'|'.$SKU_EAN.'|'.$data[12].'|'.$data[13];
}
$firstLine = false;
}
$i=1;
而(($data=fgetcsv($handle,1000000,“;”)!==FALSE){
$i++;
如果(!$firstLine){
$EAN='A'.$temp[$data[3]];
$SKU_EAN=$temp2[$data[6]。''.$data[7]。'.$data[8];
如果(为空($SKU){
echo“找不到迭代编号的SKU EAN:”.$i.“
”;
继续;
}
$data_final[]=$constante.$EAN.$EAN.$SKU EAN.$data[12]。$data[13];
}
$firstLine=false;
}
试试这个
我假设您对$SKU_EAN
的评论是单独的示例值,因此添加以下行应该跳过该值为null的迭代
if(is_null($SKU_EAN)) continue;
完整代码:
$i = 1;
while(($data = fgetcsv($handle, 1000000, ";")) !== FALSE) {
$i++;
if(!$firstLine) {
$EAN = 'A'.$temp[$data[3]];
$SKU_EAN = $temp2[$data[6].'_'.$data[7].'_'.$data[8]];
if(is_null($SKU_EAN)) {
echo 'Can\'t find SKU_EAN for iteration number: ' . $i . '<br />';
continue;
}
$data_final[] = $constante.'|'.$EAN.'|'.$SKU_EAN.'|'.$data[12].'|'.$data[13];
}
$firstLine = false;
}
$i=1;
而(($data=fgetcsv($handle,1000000,“;”)!==FALSE){
$i++;
如果(!$firstLine){
$EAN='A'.$temp[$data[3]];
$SKU_EAN=$temp2[$data[6]。''.$data[7]。'.$data[8];
如果(为空($SKU){
echo“找不到迭代编号的SKU EAN:”.$i.“
”;
继续;
}
$data_final[]=$constante.$EAN.$EAN.$SKU EAN.$data[12]。$data[13];
}
$firstLine=false;
}
包含CSV数据的数组在哪里$donnees
或$data
?$donnees[]包含我的查询结果,$data[]允许我去读取csv文件的不同列您可以发布变量转储($data\u final)的第一个结果吗代码>(我意识到它可能是一个大数组,所以只有第一个就可以了)。我更改了代码,以便您可以查看它,是的,数组很大。包含CSV数据的数组在哪里$donnees
或$data
?$donnees[]包含我的查询结果,$data[]允许我去读取csv文件的不同列您可以发布变量转储($data\u final)的第一个结果吗代码>(我意识到它可能是一个大数组,所以只有第一个就可以了)。我更改了我的代码,以便您可以查看它,是的,数组很大谢谢,它工作得非常好!现在,如何检索和显示$SKU_EAN NULL?太好了-请记住将其标记为已接受的答案。“显示$SKU\u EAN
NULL”是什么意思?我已经编辑了我的问题,以响应$SKU\u EAN
为NULL的迭代编号,$I是否与csv文件中的行号匹配?您的数据是否从csv的第2行开始?谢谢,它工作得非常好!现在,如何检索和显示$SKU_EAN NULL?太好了-请记住将其标记为已接受的答案。“显示$SKU\u EAN
NULL”是什么意思?我编辑了我的问题,以响应$SKU\u EAN
为NULL的迭代编号,$I是否与csv文件中的行号匹配?您的数据是否从csv第2行开始?