diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/EvaluateDisplayConditions.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/EvaluateDisplayConditions.php
index 5937c0104bf6514054ffec3e5e6512853c646a94..af0c25da7f942877f4fae042fadac3b0e1b48059 100644
--- a/typo3/sysext/backend/Classes/Form/FormDataProvider/EvaluateDisplayConditions.php
+++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/EvaluateDisplayConditions.php
@@ -332,6 +332,9 @@ class EvaluateDisplayConditions implements FormDataProviderInterface {
 		$result = FALSE;
 		switch ($operator) {
 			case 'REQ':
+				if (is_array($fieldValue) && count($fieldValue) === 1) {
+					$fieldValue = array_shift($fieldValue);
+				}
 				if (strtoupper($operand) === 'TRUE') {
 					$result = (bool)$fieldValue;
 				} else {
@@ -339,19 +342,34 @@ class EvaluateDisplayConditions implements FormDataProviderInterface {
 				}
 				break;
 			case '>':
+				if (is_array($fieldValue) && count($fieldValue) === 1) {
+					$fieldValue = array_shift($fieldValue);
+				}
 				$result = $fieldValue > $operand;
 				break;
 			case '<':
+				if (is_array($fieldValue) && count($fieldValue) === 1) {
+					$fieldValue = array_shift($fieldValue);
+				}
 				$result = $fieldValue < $operand;
 				break;
 			case '>=':
+				if (is_array($fieldValue) && count($fieldValue) === 1) {
+					$fieldValue = array_shift($fieldValue);
+				}
 				$result = $fieldValue >= $operand;
 				break;
 			case '<=':
+				if (is_array($fieldValue) && count($fieldValue) === 1) {
+					$fieldValue = array_shift($fieldValue);
+				}
 				$result = $fieldValue <= $operand;
 				break;
 			case '-':
 			case '!-':
+				if (is_array($fieldValue) && count($fieldValue) === 1) {
+					$fieldValue = array_shift($fieldValue);
+				}
 				list($minimum, $maximum) = explode('-', $operand);
 				$result = $fieldValue >= $minimum && $fieldValue <= $maximum;
 				if ($operator[0] === '!') {
diff --git a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php
index 9201236b29f1eed031131164249661377fa27c63..d9fe493c13ac7f66c604e101302f907a0b0df1bf 100644
--- a/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php
+++ b/typo3/sysext/backend/Tests/Unit/Form/FormDataProvider/EvaluateDisplayConditionsTest.php
@@ -601,6 +601,36 @@ class EvaluateDisplayConditionsTest extends UnitTestCase {
 		$this->assertSame($expected, $this->subject->addData($input));
 	}
 
+	/**
+	 * @param string $condition
+	 * @param array $record
+	 * @param string $expectedResult
+	 *
+	 * @dataProvider conditionStringDataProvider
+	 * @test
+	 */
+	public function matchConditionStringsWithRecordTestFieldBeingArray($condition, array $record, $expectedResult) {
+		$input = [
+			'processedTca' => [
+				'columns' => [
+					'testField' => [
+						'displayCond' => $condition,
+						'config' => [
+							'type' => 'input',
+						],
+					],
+				],
+			],
+		];
+		$input['databaseRow'] = $record ?: ['testField' => ['key' => $record['testField']]];
+
+		$expected = $input;
+		if (!$expectedResult) {
+			unset($expected['processedTca']['columns']['testField']);
+		}
+		$this->assertSame($expected, $this->subject->addData($input));
+	}
+
 	/**
 	 * Returns data sets for the test matchConditionStrings
 	 * Each data set is an array with the following elements: