PHP' strpos($ string,$ value!== false)'没有正常工作

时间:2016-12-13 14:42:00

标签: php arrays magento strpos

我对PHP非常陌生,所以我可能会在这里忽略一些简单的事情。

快速概述我的脚本:

  • 插入CSV文件并将每行存储为数组($line)。
  • 循环遍历数组$line,如果数组不为空,则将指定键的结果存储为字符串($csv_product_list)。
  • 从Magento数据库中检索产品SKU列表,并将它们存储为数组($sku)。

然后我尝试遍历$sku数组,同时检查字符串$sku中是否存在$csv_product_list的值。问题是,即使字符串$csv_product_list中存在值 ,我也会收到相同的结果。对于此验证我正在使用:

if (strpos($csv_product_list, $sku[$s] !== false)) {
    echo '<b>', $sku[$s], '</b> does exist within <b>$csv_product_list</b><br>';
} else {
    echo '<b>', $sku[$s], '</b> does not exist within <b>$csv_product_list</b><br>';
}

在下面的屏幕截图中,我输出了$csv_product_list的值,而在该行下面是两个$sku值的循环结果。

enter image description here

正如您所看到的, CB853 导致它在$csv_product_list中不存在,尽管上面的结果表明它确实存在。

请注意<{1}}中不存在 CB967 ,因此当此脚本正常运行时,结果应该彼此不同。

任何人都可以提供有关这里有什么问题的见解吗?我的完整代码包含在下面,以便进行任何澄清。非常感谢你的时间。

$csv_product_list

1 个答案:

答案 0 :(得分:2)

您没有正确使用它:

if (strpos($csv_product_list, $sku[$s] !== false)) {
                                                ^ this is wrong

$sku[$s] !== false的结果是布尔值truefalse,因此您要检查$csv_product_list中是否存在布尔值。

你需要:

if (strpos($csv_product_list, $sku[$s]) !== false) {
                                      ^ here