|
|
@@ -342,8 +342,13 @@ class MathFormulaProcessor
|
|
|
public static function processArray(array $data, array $fieldsToProcess): array
|
|
|
{
|
|
|
foreach ($data as $key => &$value) {
|
|
|
- if (in_array($key, $fieldsToProcess) && is_string($value)) {
|
|
|
- $value = self::processFormulas($value);
|
|
|
+ if (in_array($key, $fieldsToProcess)) {
|
|
|
+ if (is_string($value)) {
|
|
|
+ $value = self::processFormulas($value);
|
|
|
+ } elseif (is_array($value)) {
|
|
|
+ // 【修复】当字段在处理列表中且值是数组时(如 options),处理数组中的每个字符串元素
|
|
|
+ $value = self::processArrayValues($value);
|
|
|
+ }
|
|
|
} elseif (is_array($value)) {
|
|
|
$value = self::processArray($value, $fieldsToProcess);
|
|
|
}
|
|
|
@@ -351,6 +356,22 @@ class MathFormulaProcessor
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 【新增】递归处理数组中的所有字符串值
|
|
|
+ * 用于处理 options 等数组类型的字段
|
|
|
+ */
|
|
|
+ private static function processArrayValues(array $arr): array
|
|
|
+ {
|
|
|
+ foreach ($arr as $key => &$value) {
|
|
|
+ if (is_string($value)) {
|
|
|
+ $value = self::processFormulas($value);
|
|
|
+ } elseif (is_array($value)) {
|
|
|
+ $value = self::processArrayValues($value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $arr;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 处理题目数据
|
|
|
*/
|