Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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代码到底是做什么的?_Php_Foreach_Strpos - Fatal编程技术网

这段PHP代码到底是做什么的?

这段PHP代码到底是做什么的?,php,foreach,strpos,Php,Foreach,Strpos,好的,我的朋友给了我这个代码,用于请求头并将它们与头应该是什么进行比较。它工作得很好,但我不知道为什么。代码如下: $headers = apache_request_headers(); $customheader = "Header: 7ddb6ffab28bb675215a7d6e31cfc759"; foreach ($headers as $header => $value) { // 1 $custom .= "$header: $v

好的,我的朋友给了我这个代码,用于请求头并将它们与头应该是什么进行比较。它工作得很好,但我不知道为什么。代码如下:

    $headers = apache_request_headers(); 
    $customheader = "Header: 7ddb6ffab28bb675215a7d6e31cfc759"; 
    foreach ($headers as $header => $value) { // 1
        $custom .= "$header: $value"; // 2
    }
    $mystring = $custom;  // 3
    $findme   = $customheader; // 4
    $pos = strpos($mystring, $findme); 
    if ($pos !== false) {
// Do something
} else{ exit(); } //If it doesn't match, exit.
我就以下问题发表了一些评论:

这里到底发生了什么?是否将$headers设置为$header和$value

再说一次,我不知道这里发生了什么

为什么要将变量设置为其他变量?这是变量被使用的唯一区域,所以有理由将其设置为其他值吗

与第三个问题相同

如果这是一个糟糕的问题,我很抱歉,但它一直困扰着我,我真的想知道它为什么有效。嗯,我明白它为什么会起作用,我想我只是想知道得更具体一些。感谢您提供的任何见解

它迭代$headers,将每个元素的键分配给$header,将值分配给$value。因此,在块内部,我们在单独的变量中获取头的名称及其值。 在这一步中,我们使用点运算符将所有标题连接在一个字符串中。从本质上讲,我们将头从数组转换为字符串。 除非这些变量在其他地方使用,否则没有理由重新分配。 免责声明:我是红宝石人,如果我错了,请纠正我

 $headers = apache_request_headers(); 
它迭代$headers,将每个元素的键分配给$header,将值分配给$value。因此,在块内部,我们在单独的变量中获取头的名称及其值。 在这一步中,我们使用点运算符将所有标题连接在一个字符串中。从本质上讲,我们将头从数组转换为字符串。 除非这些变量在其他地方使用,否则没有理由重新分配。 免责声明:我是红宝石人,如果我错了,请纠正我

 $headers = apache_request_headers(); 
获取标头数组

    $customheader = "Header: 7ddb6ffab28bb675215a7d6e31cfc759"; 
定义了要搜索的customheader

    foreach ($headers as $header => $value) { // 1
        $custom .= "$header: $value"; // 2
    }
循环并创建一个$custom变量来保存扩展的$key=>$value头

在展开的字符串中查找$customheader

    if ($pos !== false) {
// Do something
} else{ exit(); } //If it doesn't match, exit.
确实不需要重新分配变量。本质上,它是将标题数组转换成一个大字符串,然后搜索其中的$customheader文本是否存在

获取标头数组

    $customheader = "Header: 7ddb6ffab28bb675215a7d6e31cfc759"; 
定义了要搜索的customheader

    foreach ($headers as $header => $value) { // 1
        $custom .= "$header: $value"; // 2
    }
循环并创建一个$custom变量来保存扩展的$key=>$value头

在展开的字符串中查找$customheader

    if ($pos !== false) {
// Do something
} else{ exit(); } //If it doesn't match, exit.
确实不需要重新分配变量。本质上,它是将标题数组转换成一个大字符串,然后搜索$customheader文本是否存在。

返回当前请求中所有HTTP标题的关联数组,如果失败则返回false。因此,最好检查返回值,如下所示:

$headers = apache_request_headers(); 
if(! $headers) {
 die("Error fetching headers");
}
1:您正在对得到的关联数组进行迭代。 2:在数组中形成一串粘合的键值对,键值之间用冒号分隔。 3和4只是将一个变量分配给另一个变量。您可以直接使用:$pos=strpos$custom,$customheader;代替步骤3和4。如果strpos在$custom中找不到您的$customheader,则返回false,否则返回找到的位置

总的来说,此代码段检查apache_请求_头返回的头中是否存在自定义头。

返回当前请求中所有HTTP头的关联数组,如果失败,则返回false。因此,最好检查返回值,如下所示:

$headers = apache_request_headers(); 
if(! $headers) {
 die("Error fetching headers");
}
1:您正在对得到的关联数组进行迭代。 2:在数组中形成一串粘合的键值对,键值之间用冒号分隔。 3和4只是将一个变量分配给另一个变量。您可以直接使用:$pos=strpos$custom,$customheader;代替步骤3和4。如果strpos在$custom中找不到您的$customheader,则返回false,否则返回找到的位置


总的来说,这段代码检查apache_请求_头返回的头中是否存在自定义头。

谢谢,这段代码解释得最好。现在我明白了:谢谢,这个解释得最好。现在我明白了: