diff --git a/src/Util/Exporter.php b/src/Util/Exporter.php
index 4cbe4141ff8..797f1418cb9 100644
--- a/src/Util/Exporter.php
+++ b/src/Util/Exporter.php
@@ -11,6 +11,7 @@
 
 use function is_array;
 use function is_scalar;
+use SebastianBergmann\RecursionContext\Context;
 
 /**
  * @internal This class is not covered by the backward compatibility promise for PHPUnit
@@ -26,7 +27,7 @@ public static function export(mixed $value, bool $exportObjects = false): string
         return '{enable export of objects to see this value}';
     }
 
-    private static function isScalarOrArrayOfScalars(mixed $value): bool
+    private static function isScalarOrArrayOfScalars(mixed &$value, Context $context = null): bool
     {
         if (is_scalar($value)) {
             return true;
@@ -36,8 +37,19 @@ private static function isScalarOrArrayOfScalars(mixed $value): bool
             return false;
         }
 
-        foreach ($value as $_value) {
-            if (!self::isScalarOrArrayOfScalars($_value)) {
+        if (!$context) {
+            $context = new Context;
+        }
+
+        if ($context->contains($value) !== false) {
+            return true;
+        }
+
+        $array = $value;
+        $context->add($value);
+
+        foreach ($array as &$_value) {
+            if (!self::isScalarOrArrayOfScalars($_value, $context)) {
                 return false;
             }
         }
diff --git a/tests/end-to-end/regression/5567.phpt b/tests/end-to-end/regression/5567.phpt
new file mode 100644
index 00000000000..abcd46020ff
--- /dev/null
+++ b/tests/end-to-end/regression/5567.phpt
@@ -0,0 +1,32 @@
+--TEST--
+https://github.com/sebastianbergmann/phpunit/issues/5567
+--FILE--
+<?php declare(strict_types=1);
+$_SERVER['argv'][] = '--do-not-cache-result';
+$_SERVER['argv'][] = '--no-configuration';
+$_SERVER['argv'][] = __DIR__ . '/5567/Issue5567Test.php';
+
+require_once __DIR__ . '/../../bootstrap.php';
+(new PHPUnit\TextUI\Application)->run($_SERVER['argv']);
+--EXPECTF--
+PHPUnit %s by Sebastian Bergmann and contributors.
+
+Runtime: %s
+
+F                                                                   1 / 1 (100%)
+
+Time: %s, Memory: %s MB
+
+There was 1 failure:
+
+1) PHPUnit\TestFixture\Issue5567\Issue5567Test::testAnythingThatFailsWithRecursiveArray
+Failed asserting that Array &0 [
+    'self' => Array &1 [
+        'self' => Array &1,
+    ],
+] is false.
+
+%sIssue5567Test.php:%d
+
+FAILURES!
+Tests: 1, Assertions: 1, Failures: 1.
diff --git a/tests/end-to-end/regression/5567/Issue5567Test.php b/tests/end-to-end/regression/5567/Issue5567Test.php
new file mode 100644
index 00000000000..cbbcec219ad
--- /dev/null
+++ b/tests/end-to-end/regression/5567/Issue5567Test.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TestFixture\Issue5567;
+
+use PHPUnit\Framework\TestCase;
+
+final class Issue5567Test extends TestCase
+{
+    public function testAnythingThatFailsWithRecursiveArray(): void
+    {
+        $array         = [];
+        $array['self'] = &$array;
+
+        $this->assertFalse($array);
+    }
+}