$ cartArray结构:
Array ( [0] => 1. X => 2. Y [2] => 3. Z [3] => 4. XX [4] => 5. YY [5] => )
$列表:
$list = array(
"1.",
"2.",
"3.",
"4.",
"5."
);
功能
function alignNum($cartArray, $list)
{
foreach($cartArray as $cA)
{
echo "<br />" . $cA . "<br /><br />";
foreach($list as $l)
{
echo $l . "<br />";
echo "Type of \$l is " . gettype($l) . " and type of \$cA is " . gettype($cA) . "<br />";
$pos = strpos($cA, $l);
echo "Comparing " . $l . " to " . $cA . "<br />";
if ($pos !== true)
{
echo "<br />" . $l . " was not found in " . $cA . "<br /><br />";
continue;
}
else
{
$post_cA = str_replace("EUR", "EUR</span>", $cA);
$new_cA[] = (str_replace($l, substr($l, 0, -4) . "<span style='float: right>'", $cA)) . $post_cA;
return $new_cA;
}
}
}
}
$new_cart = alignNum($cart, $list);
所以,我一直收到我的自定义调试信息:“在Y中找不到X”。即,它没有在任何提供的字符串中找到它。
这也不是类型问题。两者都是字符串。
有什么想法吗?
编辑:另外,请注意我已经审查了一些内容,因为这是与业务相关的代码。
答案 0 :(得分:1)
即使在WB中,比较数字和布尔值通常也是一个坏主意(除非你是C程序员)
if ($pos != true)
但在中
if ($pos !== true)
AFAIK它永远不会匹配,因为变量是不同的类型
答案 1 :(得分:1)
德国阿灵顿实际上是对的。 看看strpos正在返回的内容:
返回针相对于针的位置 haystack字符串的开头(与offset无关)。另请注意 字符串位置从0开始,而不是1。
如果未找到针,则返回FALSE。
带
if ($pos !== true)
你问的是strher返回了一个布尔值true(因为你正在用!==检查typesafe)。 但实际上strpos可能已找到针并返回,即第一场比赛的位置,但你要求的是真的。
尝试反过来检查:
if (false === $pos) { // your debug message }