摆脱?:PHP中的运算符

摆脱?:PHP中的运算符,php,Php,我对用于调查的PHP代码有问题。代码只接受一个值“answer”,如果answer不可用,则接受“otherAnswer”。我需要它同时接受“答案”和“其他答案” 这是代码。谢谢你的帮助 protected function convertRequestToUserAnswersArray() { $answers = []; if ($this->request->hasArgument('answers')) { /** @noinspectio

我对用于调查的PHP代码有问题。代码只接受一个值“answer”,如果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;
}

尝试附加两个答案。如果你想要两个答案,你不需要使用三元运算符

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;
    }

我们不知道如何使用
$answers
。因为同时返回answer和otherAnswer需要
$answers
作为数组。这意味着
$answers
的任何用户都必须进行重构

类似的方法可能会奏效:

$answers[$questionId] = ["answer" => $requestAnswer["answer"], "otherAnswers" => requestAnswer["otherAnswer"] ]
只需为密钥的存在添加一些检查机制


或者,您可以按照另一个SO答案中的建议将其连接起来。

正如您所说,您需要这两个值,然后可以存储到数组中,如下所示

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

通过使用上述脚本,
$answers
将对
$questionUid

具有两个值,假设
$answers[$questionUid]
是一个数组,您可以尝试将值推送到该数组:

/** @noinspection PhpWrongForeachArgumentTypeInspection */
foreach ($requestAnswers as $questionUid => $requestAnswer) {
    $answers[$questionUid] = $requestAnswer['answer'] . '----' . $requestAnswer['otherAnswer'];
}

希望这有帮助。

然后将其连接起来,或者将其放入数组中?你试过什么?您遇到了什么问题?请尝试以下操作:$answers[$questionUid]=$requestAnswer['answer']$requestAnswer['answer']:$requestAnswer['otherAnswer']@BhAvikGajjar谢谢,但它仍然只需要“答案”。想想这就是众所周知的
Elvis操作符
”-)@RamRaider true,我的错误我要编辑我的答案代码给出错误:setUserAnswerFromRequestData()必须是字符串类型,null给出代码给出错误:setUserAnswerFromRequestData()必须是字符串类型,给定的null$answer将被写入数据库。代码给出错误:setUserAnswerFromRequestData()的类型必须为string,并给定null