当第二个节点不存在时,如何处理PHP错误消息?

时间:2018-07-09 10:38:13

标签: php error-handling undefined

希望有人可以为此提供帮助

我正在使用它来抓取URL的第一部分

$page_url = perch_page_url(['include-domain' => false,], true); // 
Output the URL of the current page, minus https
$url_parts = explode("/", $page_url); // Split a string by a string

我正在使用这种技术来获取URL

的第一个和第二个节点
$first_node = $url_parts[1]; // First part of string 
$second_node = $url_parts[2]; // Second part of string

在我的主页上没有第二个节点,所以我收到了undefined offset消息。

是否可以检查$second_node是否存在?

我尝试使用

if (isset($second_node)) {
echo "$second_node is set so I will print.";
}

if (!empty($second_node)) {
echo '$second_node is either 0, empty, or not set at all';  
}

两个if语句仅在设置了$ second_node之后回显吗?所以我仍然收到错误消息。

3 个答案:

答案 0 :(得分:1)

请直接在if条件中使用它,并避免赋给变量或在if条件中检查后赋值

if (isset($url_parts[2])) { // remove this line $second_node = $url_parts[2]; 
echo "$second_node is set so I will print.";
}

答案 1 :(得分:1)

这是因为错误是在$second_node变量的初始化时引发的。

首先检查节点是否存在,然后声明变量:

$second_node = ""; // Or whatever
if (isset($url_parts[2]) {
    $second_node = $url_parts[2];
}

在这里检查:https://3v4l.org/fRJ7L

答案 2 :(得分:1)

您可以执行以下操作:

$second_node = isset($url_parts[2]) ? $url_parts[2] : FALSE;
if ($second_node)
{
    echo "Second node: {$second_node}";
}

这检查是否设置了$url_parts数组的第三个索引(从0开始)。如果是,它将其值分配给$second_node。如果没有,它将分配FALSE,因此如果您需要稍后(再次)进行检查,可以在代码中进行进一步处理。

相关问题