/** * 一つのお題を表す配列から、正規表現を除いた解答をShift_JISに直列化可能に文字列に変換して返します。 * @param (string|string[]|float)[][] $word * @param callable|null $convert 変換器。 * @return string[] 選択肢必須の問題、またはShift_JISに直列化不能な解答しか存在しなければ、空の配列を返します。 */ protected function getAnswers(array $word, callable $convert = null) : array { $answerValidator = new AnswerValidator(); foreach (isset($word['answer'][0]) ? $word['answer'] : $word['text'] as $answer) { if (!$answerValidator->isRegExp($answer)) { $shiftJISable = $convert ? call_user_func($convert, $answer) : $this->convertToShiftJISableInAnswer($answer); if ($this->isShiftJISable($shiftJISable)) { $answers[] = $shiftJISable; } } } return $answers ?? []; }