0

我有一个字符串,它可能包含也可能不包含逗号。如果是这样,我希望它爆炸成一个数组;如果不是,我仍然希望将字符串保存到新标识符中。我的代码显然不起作用。有人有更好的想法吗?

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

此操作的正确语法是什么?

4

6 回答 6

4
if(strpos($_SESSION['shoparea'], ',') !== false) {
    $areas = explode(',', $_SESSION['shoparea']);
} else {
     $areas = $_SESSION['shoparea'];
}
于 2012-10-15T17:21:02.530 回答
3

一切都可以爆炸,如果没有分隔符的实例,它就会变成一个单例数组,所以它可能更简单

$result = explode(",", $_SESSION['shoparea']);
if (count($result) == 1)
   $areas = $result[0];
else
   $areas = $result;
于 2012-10-15T17:22:32.797 回答
2

您可以使用http://php.net/strpos函数来确保存在“,”。

于 2012-10-15T17:21:02.717 回答
1

所有你需要的是

$_SESSION['shoparea'] = "xx"; // Test value .. 

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

输出

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


注意:$areas需要始终是数组..如果您使用的是循环,您可能会遇到问题,所以我转换了它..

于 2012-10-15T17:21:12.577 回答
1

例如,你可以这样做

$areas = $_SESSION['shoparea'];
if(strpos($areas, ',') !== false) {
    $areas = explode(",", $areas);
}
于 2012-10-15T17:23:24.290 回答
0
if (substr_count($_SESSION['shoparea'], ',') > 0) {
    $areas = explode(",", $_SESSION['shoparea']);
}
else {
    $areas = $_SESSION['shoparea'];
}
于 2012-10-15T17:21:40.970 回答