72610
以下のコードについて質問です。

エラーが表示されてしまいますが、`{}` か `$` でどこかで定義しなければいけないのだと思いますが、どこをどうすれば良いのかわかりません。

よろしくお願いします。

* * *

**エラーメッセージ:**

```

    Parse error: syntax error, unexpected '"a"' (T_CONSTANT_ENCAPSED_STRING), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /contact_send.php on line 24
    
```

**ソースコード:**

```

    <?
    if(empty($_POST))
    {
        header("HTTP/1.1 404 Not Found");
        exit();
    }
    
    $subject = "講座お申し込み完了";
    $body = "講座のお申し込みを受け付けました。\n\n" .
        
                    "内容：{$_POST['entryPlan']}\n" .
                    "会社名：{$_POST['company']}\n" .
                    "お名前：{$_POST['fname']} {$_POST['lname']}\n" .
                    "メールアドレス:{$_POST['email']}\n";
    
    mb_send_mail($_POST['your-email'], $subject, $body, "From: info@○○○○.jp");
    // mb_send_mail("info@○○○○.jp", $subject, $body, "From: info@○○○○.jp");
    
    // 講座に登録するユーザーリストに登録
    function register_mail_newsletter_list($email, $date, $no, $status = 0)
    {
    $url = "https://○○○○.com/stepmail/kd.php?no={$no}";
    
    if (($_POST['entryPlan'])->"a")
        {
            $no = 'A';
        }
    else ($_POST['entryPlan'->'b'])
        {
            $no = 'B';
        }
    $data = array
    (
            "registration_mail" => $email,
            "action" => "confirm",
            "no" => $no,
    );
    
    $options = array("http" => array
    (
            "method" => "POST",
            "content" => http_build_query($data),
    ));
    file_get_contents($url, false, stream_context_create($options));
    }
    
    header("Location: thanks.html");
    ?>
    
```
CC BY-SA 4.0
2020-12-12T06:15:55.053
72607
2020-12-12T07:49:15.047
2020-12-12T06:22:13.137
3060
43116
question
php
PHP syntaxエラー
エラーメッセージにある`line 24`はこの行のことでしょう。

```

    if (($_POST['entryPlan'])->"a")
    
```

`->`という記号にどのような意味を期待して使用されているのかわかりませんが、そこは

```

    if ($_POST['entryPlan'] === "a")
    
```

とでもすべきところではないでしょうか?

上記を修正しても続く28行目:

```

    else ($_POST['entryPlan'->'b'])
    
```

この行もPHPのコードとして、

  * `else`の後に条件式と思われる`(...)`がある
  * `$_POST`への添字として、`'entryPlan'->'b'`と言うPHP的には意味のない式を使っている

などの問題点があります。

```

    else if( $_POST['entryPlan'] === 'b' )
    
```

としたかったところではないのでしょうか?

* * *

上記の私の推定が正しかったとしても、「`$_POST['entryPlan']`の値が`'a'`でも`'b'`でもなかったらどうするんだ」というロジック上の問題が存在します。

また、関数として定義している`register_mail_newsletter_list`はどこからも呼び出されていませんので、構文エラーを修正しても所望の動作にはならないように思いますが、一体何をさせたくて現在のようなコードになっているかご説明いただかないと、これ以上のことは何も言えないです。
CC BY-SA 4.0
2020-12-12T07:49:15.047
72610
2020-12-12T07:49:15.047
13972
72607
answer