Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';无法使用strpos在目标中找到我的字符串_Php - Fatal编程技术网

Php Can';无法使用strpos在目标中找到我的字符串

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

$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 $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 }