摆脱 ?: PHP 中的运算符

我对用于调查的 PHP 代码有疑问。该代码仅采用一个值“answer”,如果没有答案,则采用“otherAnswer”。我需要它同时接受“答案”和“其他答案”


这是代码。感谢帮助。


protected function convertRequestToUserAnswersArray()

{

    $answers = [];


    if ($this->request->hasArgument('answers')) {

        /** @noinspection PhpUnhandledExceptionInspection */

        $requestAnswers = $this->request->getArgument('answers');


        /** @noinspection PhpWrongForeachArgumentTypeInspection */

        foreach ($requestAnswers as $questionUid => $requestAnswer) {

            $answers[$questionUid] = $requestAnswer['answer'] ?: $requestAnswer['otherAnswer'];

        }

    }


    return $answers;

}


一只斗牛犬
浏览 131回答 3
3回答

慕码人2483693

假设这$answers[$questionUid]是一个数组,您可以尝试将值推送到它:/** @noinspection PhpWrongForeachArgumentTypeInspection */foreach ($requestAnswers as $questionUid => $requestAnswer) {    $answers[$questionUid] = $requestAnswer['answer'] . '----' . $requestAnswer['otherAnswer'];}希望这可以帮助。

繁华开满天机

正如你所说,你想要两个值然后你可以存储到数组中,如下所示$answers[$questionUid][] = $requestAnswer['answer'];$answers[$questionUid][] = $requestAnswer['otherAnswer'];通过使用上面的脚本$answers将有两个值反对$questionUid

largeQ

我们不知道$answers将如何使用。因为返回 answer 和 otherAnswer 都需要$answers是数组。这意味着$answers必须重构任何用户。像这样的东西可能会起作用:$answers[$questionId] = ["answer" => $requestAnswer["answer"], "otherAnswers" => requestAnswer["otherAnswer"] ]只需为密钥存在添加一些检查机制。或者您可以按照另一个 SO 答案中的建议将其连接起来。
打开App,查看更多内容
随时随地看视频慕课网APP