【问题标题】:csv string comparison not workingcsv字符串比较不起作用
【发布时间】:2017-12-07 23:11:53
【问题描述】:

我正在检查一个字符串是否出现在用fgetcsv() 填充的数组中,我已经检查了数组中包含的内容和字符串,但in_array() 返回false

function checkFieldCSV($index,$code){
    $codes  = array();
    if (($handle = fopen("./csv/file.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {
            array_push($codes, explode(';', $data[0])[$index] );
        }
        fclose($handle);
    }
    $codes = removeCommas($codes);
    var_dump($codes);
    var_dump($code);
    return in_array($code, $codes);
}

输出:

bool(false)

【问题讨论】:

  • @mickmackusa 转储已添加
  • 我们能看到任何原始的 .csv 文本吗?我想隔离隐形字符的位置和位置。 Eines IMI/Easyvista/Explotació de dades 有四个不可见字符。

标签: php csv encoding utf-8 php-5.4


【解决方案1】:

我认为您尝试在二维数组中进行搜索。

array_push($codes, explode(';', $data[0])[$index] );

这将导致 $codes[0][0...n] 因此在数组中不起作用。

试试下面的

$found = false;
foreach($codes as $key=>$value){
   $found = in_array($code, $value);
}
return $found;

代码未经测试,如果对您有帮助,请告诉我。

【讨论】:

  • 不是二维数组,我试过比较单个元素也失败了
  • 您是否仔细检查了区分大小写? in_array() 区分大小写
  • [5]=> string(26) "Telefonia/IPAD/Consulta"string(23) "Telefonia/IPAD/Consulta" 的长度不同。可能是编码问题?试试mb_detect_encoding
  • 如果我使用 mb_detect_encoding 我在 php 5.4.13 中收到以下错误 PHP Fatal error: Call to undefined function mb_detect_encoding()
  • 字符串中可能有空格或不可打印的字符。可能是你的 csv 坏了?
猜你喜欢
  • 2011-09-20
  • 2014-04-03
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多