2

我正在使用is_array函数,但也需要使用isset,好像没有选择任何内容一样我得到一个未定义的索引错误。

我还在学习PHP所以不知道如何结合我写的东西isset,我的代码如下

$special = $_POST['special'];
if (is_array($_POST['special'])) {
    $special = implode(",", $_POST['special']);
} else {
    $special = $_POST['special'];
}

非常感谢

4

4 回答 4

4

你不需要使用is_array,你可以强制一切都是数组......

$special = isset($_POST['special']) ? $_POST['special'] : null;
$special = implode(",", (array) $special);
于 2013-05-05T20:26:20.683 回答
2

您正在尝试将值分配$_POST['special']$special是否已设置。这就是您收到错误的原因。以下可能有效:

$special = ""; 
if (isset($_POST['special'])) {
    if(is_array($_POST['special'])) {
        $special = implode(",", $_POST['special']);
    } else {
        $special = $_POST['special'];
    }
} 

如果$_POST['special']是一个数组,它将使用 implode 将其转换为字符串并将其分配给$special.

如果它不是数组,但仍然设置,则将值分配给$special

于 2013-05-05T20:23:00.273 回答
0

您正在尝试分配$_POST数组的值,无论它是否已设置。然后告诉计算机是否$_POST['special']已设置,然后将其分配给$special,如果未设置,则$special再次分配给。然后你得到那个错误。

您的 if 语句没有意义。

$special = "";
$pos = false;
if (isset($_POST['special'])) 
{
    $pos = strpos($_POST['special'], ',');
    if($pos !== false)
    {
        $special = implode(",", $_POST['special']);
    }
    else
    {
        $special = $_POST['special'];
    }
}
于 2013-05-05T20:17:56.807 回答
0

如果不存在值,您的第一行将引发错误$_POST[ 'special' ],因为分配$_POST[ 'special' ]$special假设存在一个值。做你想做的事情的正确方法如下:

if ( isset( $_POST[ 'special' ] ) )
    $special = implode( ',', $_POST[ 'special' ] );
else
    $special = null;

使用上面的代码,您可以稍后在脚本中检查是否$special使用null严格比较。如果是,则$_POST[ 'special' ]未设置。否则,您可以假设它包含内爆字符串值。

当然,您可以添加更多检查,例如确保值也不为空,等等。

于 2013-05-05T20:20:34.243 回答