Php 如果可爆炸/否则

Php 如果可爆炸/否则,php,Php,我有一个字符串,它可能包含逗号,也可能不包含逗号。如果是的话,我想把它分解成一个数组;如果没有,我仍然希望字符串保存到新标识符。我的代码显然不起作用。有谁有更好的主意吗 if(explode(",", $_SESSION['shoparea'])) { $areas = explode(",", $_SESSION['shoparea']); } else { $areas = $_SESSION['shoparea']; } 此操作的正确语法是什么?您可以使用函数来确保“,

我有一个字符串,它可能包含逗号,也可能不包含逗号。如果是的话,我想把它分解成一个数组;如果没有,我仍然希望字符串保存到新标识符。我的代码显然不起作用。有谁有更好的主意吗

if(explode(",", $_SESSION['shoparea']))
{
    $areas = explode(",", $_SESSION['shoparea']);
} else {
     $areas = $_SESSION['shoparea'];
}
此操作的正确语法是什么?

您可以使用函数来确保“,”存在。

您只需要

if(strpos($_SESSION['shoparea'], ',') !== false) {
    $areas = explode(',', $_SESSION['shoparea']);
} else {
     $areas = $_SESSION['shoparea'];
}
$_SESSION['shoparea'] = "xx"; // Test value .. 

if (!$areas = explode(",", $_SESSION['shoparea'])) {
    $areas = array($_SESSION['shoparea']);
}
输出

array
  0 => string 'xx' (length=2)


注意:
$areas
需要始终为数组。。如果您使用的是循环,则可能会出现问题,因此我对其进行了转换。

所有内容都可以分解,如果没有分隔符的实例,它将成为一个单例数组,因此可能更简单

if (substr_count($_SESSION['shoparea'], ',') > 0) {
    $areas = explode(",", $_SESSION['shoparea']);
}
else {
    $areas = $_SESSION['shoparea'];
}
$result = explode(",", $_SESSION['shoparea']);
if (count($result) == 1)
   $areas = $result[0];
else
   $areas = $result;

例如,你可以这样做

$areas = $_SESSION['shoparea'];
if(strpos($areas, ',') !== false) {
    $areas = explode(",", $areas);
}

无论哪种方式,你都可以把它炸开。如果其中没有逗号,您将拥有一个包含1个元素的数组。如果它不包含逗号,为什么要将其作为字符串?-1
explode
仅当分隔符为空字符串时才返回false:您最好对其进行测试。。。。这里::)好的,+/-0。现在我明白你在做什么了。这仍然毫无意义。if语句永远不会返回true。只需使用
$areas=explode(“,”,$\u会话['shoparea]”)即可实现同样的效果因为
$areas
需要是数组。。。如果他在
$areas
上使用循环,可能会产生错误,也就是说,如果他在$areas上使用循环。OP根本没有说在他的代码之后发生了什么。然而,他确实指定了他想要的内容,即$AREA变量在他的代码片段之后是一个字符串。尽管如此,应该有一个非常好的理由来区别对待这两种情况。为什么数据必须是(一个项目)或(一个项目列表),而不是(一个包含一个项目的列表)?@cHao搞乱你同事(/其他开发人员)的头脑不是一个很好的理由;-)