Php Can';无法使用strpos在目标中找到我的字符串
$cartArray结构:Php Can';无法使用strpos在目标中找到我的字符串,php,Php,$cartArray结构: Array ( [0] => 1. X => 2. Y [2] => 3. Z [3] => 4. XX [4] => 5. YY [5] => ) $list: $list = array( "1.", "2.", "3.", "4.", "5." ); 作用 function alignNum($cartArray, $list) { foreach($cartArray as
Array ( [0] => 1. X => 2. Y [2] => 3. Z [3] => 4. XX [4] => 5. YY [5] => )
$list:
$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);
函数alignNum($cartArray,$list)
{
foreach($cartArray作为$cA)
{
回声“
.”$cA.“
”;
foreach($l)
{
echo$l.“
”;
echo“Type of\$l is.”gettype($l)。“Type of\$cA is.”gettype($cA)。“
”;
$pos=STRPO($cA$l);
回显“将“$l.”与“$cA.”进行比较“
”;
如果($pos!==true)
{
在“$cA”中找不到回显“
”。
;
继续;
}
其他的
{
$post_cA=str_替换(“欧元”、“欧元”和$cA);
$new_cA[]=(str_replace($l,substr($l,0,-4)。“即使在
如果($pos!=true)
但是在
如果($pos!==true)
因为变量是不同类型的,所以它永远不会匹配。德国阿灵顿实际上是对的。
看看有什么东西回来了:
返回针相对于针的位置
干草堆字符串的开头(与偏移量无关)。另请注意
字符串位置从0开始,而不是从1开始
如果未找到指针,则返回FALSE
与
您正在询问strpos是否返回布尔值true(因为您正在使用!==检查typesafe)。
但实际上,strpos可能已经找到了针并返回了第一次匹配的位置,即2,但您要求的是true
试着反过来检查:
if (false === $pos) { // your debug message }
呃,对不起,但这有什么关系?我不想说得太粗鲁,但我在帖子中提到这两个变量都是字符串。@user1308765假设您在位置0处匹配它,当您将其与bool it(pos=0)进行比较时将被隐式转换为false,结果是它不存在,但实际上匹配。好的,这是相关的,但我认为PHP调用strps()将返回一致的结果类型的假设是错误的。请参阅Jojo的答案。这是(许多)之一我不喜欢PHP的原因:为什么应该返回数值的函数突然返回FALSE???我不会在这里开始PHP爱/恨的事情,生命很短…与这个问题相关的更重要的是,strpos永远不会返回布尔值true;)如果我现在用我的补丁和你给定的值执行你的函数,我不会收到你的错误消息。相反,你的str_replace东西会被执行。所以这肯定是你现在面临的另一个问题。请更新你的问题,因为“不起作用”并没有说什么
if (false === $pos) { // your debug message }