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 に答える