Commit b58087daab7 for php.net
commit b58087daab70ce925c549b33be78574480ea1c3e
Author: Jorg Adam Sowa <jorg.sowa@gmail.com>
Date: Mon Feb 23 13:36:38 2026 +0100
test: improve tests for in_array (#21087)
By splitting the massive tests into more specific, smaller tests.
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_bool.phpt b/ext/standard/tests/array/in_array/in_array_variation1_bool.phpt
new file mode 100644
index 00000000000..9b9475dec90
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_bool.phpt
@@ -0,0 +1,118 @@
+--TEST--
+Test in_array() function : usage variations - haystack with booleans
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$haystack = [TRUE, FALSE];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $haystack));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $haystack, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string '4' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string '5' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float -2.0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- empty array --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- null --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'ab' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'abcd' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float 0.0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string with null bytes --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- enum Sample::A --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- enum Sample::B --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_data.inc b/ext/standard/tests/array/in_array/in_array_variation1_data.inc
new file mode 100644
index 00000000000..150b8c4d319
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_data.inc
@@ -0,0 +1,28 @@
+<?php
+enum Sample {
+ case A;
+ case B;
+}
+
+$values = [
+ "integer 4" => 4,
+ "string '4'" => "4",
+ "float 4.00" => 4.00,
+ "string 'b'" => "b",
+ "string '5'" => "5",
+ "integer -2" => -2,
+ "float -2.0" => -2.0,
+ "float -2.98989" => -2.98989,
+ "string '-.9'" => "-.9",
+ "string 'True'" => "True",
+ "empty string" => "",
+ "empty array" => [],
+ "null" => NULL,
+ "string 'ab'" => "ab",
+ "string 'abcd'" => "abcd",
+ "float 0.0" => 0.0,
+ "integer -0" => -0,
+ "string with null bytes" => "abcd\x00abcd\x00abcd",
+ "enum Sample::A" => Sample::A,
+ "enum Sample::B" => Sample::B,
+];
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_empty.phpt b/ext/standard/tests/array/in_array/in_array_variation1_empty.phpt
new file mode 100644
index 00000000000..e661dcf299b
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_empty.phpt
@@ -0,0 +1,118 @@
+--TEST--
+Test in_array() function : usage variations - haystack with empty string and array
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$haystack = ["", []];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $haystack));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $haystack, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '4' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '5' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- empty array --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- null --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'ab' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'abcd' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 0.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string with null bytes --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::A --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::B --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_enum.phpt b/ext/standard/tests/array/in_array/in_array_variation1_enum.phpt
new file mode 100644
index 00000000000..ed21aa52b26
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_enum.phpt
@@ -0,0 +1,118 @@
+--TEST--
+Test in_array() function : usage variations - haystack with enum values
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$haystack = [Sample::A];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $haystack));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $haystack, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '4' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '5' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty array --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- null --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'ab' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'abcd' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 0.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string with null bytes --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::A --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- enum Sample::B --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_mixed.phpt b/ext/standard/tests/array/in_array/in_array_variation1_mixed.phpt
new file mode 100644
index 00000000000..2655484ce7e
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_mixed.phpt
@@ -0,0 +1,118 @@
+--TEST--
+Test in_array() function : usage variations - haystack with mixed string/int keys
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$haystack = ["a" => "A", 2 => "B", "C" => 3, 4 => 4, "one" => 1, "" => NULL, "b", "ab", "abcd"];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $haystack));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $haystack, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- string '4' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- string '5' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- empty array --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- null --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- string 'ab' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- string 'abcd' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- float 0.0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string with null bytes --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::A --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::B --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_negative.phpt b/ext/standard/tests/array/in_array/in_array_variation1_negative.phpt
new file mode 100644
index 00000000000..90c30f40f18
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_negative.phpt
@@ -0,0 +1,118 @@
+--TEST--
+Test in_array() function : usage variations - haystack with negative numbers/floats
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$haystack = [-1, -2, -3, -4, -2.989888, "-0.005" => "neg0.005", 2 => "float2", "-.9" => -.9];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $haystack));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $haystack, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '4' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '5' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- float -2.0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty array --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- null --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'ab' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'abcd' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 0.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string with null bytes --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::A --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::B --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_nested.phpt b/ext/standard/tests/array/in_array/in_array_variation1_nested.phpt
new file mode 100644
index 00000000000..bfbe0dde347
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_nested.phpt
@@ -0,0 +1,118 @@
+--TEST--
+Test in_array() function : usage variations - haystack with nested arrays
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$haystack = [4, [1, 2 => 3], "one" => 1, "5" => 5];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $haystack));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $haystack, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- string '4' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '5' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty array --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- null --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'ab' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'abcd' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 0.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string with null bytes --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::A --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::B --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_null_bytes.phpt b/ext/standard/tests/array/in_array/in_array_variation1_null_bytes.phpt
new file mode 100644
index 00000000000..0b4369b241a
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_null_bytes.phpt
@@ -0,0 +1,118 @@
+--TEST--
+Test in_array() function : usage variations - haystack with null byte strings
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$haystack = ["abcd\x00abcd\x00abcd"];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $haystack));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $haystack, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '4' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '5' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty array --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- null --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'ab' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'abcd' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 0.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string with null bytes --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- enum Sample::A --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::B --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_special_chars.phpt b/ext/standard/tests/array/in_array/in_array_variation1_special_chars.phpt
new file mode 100644
index 00000000000..d424093c86e
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_special_chars.phpt
@@ -0,0 +1,118 @@
+--TEST--
+Test in_array() function : usage variations - haystack with special character strings
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$haystack = ["abcd\tabcd\nabcd\rabcd\0abcdefghij"];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $haystack));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $haystack, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '4' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '5' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty array --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- null --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'ab' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'abcd' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 0.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string with null bytes --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::A --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::B --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array/in_array_variation1_zero.phpt b/ext/standard/tests/array/in_array/in_array_variation1_zero.phpt
new file mode 100644
index 00000000000..695b417eaa9
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_variation1_zero.phpt
@@ -0,0 +1,118 @@
+--TEST--
+Test in_array() function : usage variations - haystack with zero element
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$haystack = [0];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $haystack));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $haystack, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '4' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '5' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.0 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- empty array --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- null --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'ab' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- string 'abcd' --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- float 0.0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- string with null bytes --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::A --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
+-- enum Sample::B --
+in_array() strict=false
+bool(false)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array_variation2.phpt b/ext/standard/tests/array/in_array/in_array_variation2.phpt
similarity index 100%
rename from ext/standard/tests/array/in_array_variation2.phpt
rename to ext/standard/tests/array/in_array/in_array_variation2.phpt
diff --git a/ext/standard/tests/array/in_array_variation3.phpt b/ext/standard/tests/array/in_array/in_array_variation3.phpt
similarity index 100%
rename from ext/standard/tests/array/in_array_variation3.phpt
rename to ext/standard/tests/array/in_array/in_array_variation3.phpt
diff --git a/ext/standard/tests/array/in_array_variation4.phpt b/ext/standard/tests/array/in_array/in_array_variation4.phpt
similarity index 100%
rename from ext/standard/tests/array/in_array_variation4.phpt
rename to ext/standard/tests/array/in_array/in_array_variation4.phpt
diff --git a/ext/standard/tests/array/in_array/in_array_with_ref.phpt b/ext/standard/tests/array/in_array/in_array_with_ref.phpt
new file mode 100644
index 00000000000..e2134dda5a8
--- /dev/null
+++ b/ext/standard/tests/array/in_array/in_array_with_ref.phpt
@@ -0,0 +1,125 @@
+--TEST--
+in_array() with references
+--FILE--
+<?php
+include(__DIR__ . '/in_array_variation1_data.inc');
+
+$refVar = "B";
+$refVar2 = 4;
+$refVar3 = -2.989888;
+$refVar4 = NULL;
+$refVar5 = Sample::A;
+$refVar6 = [];
+$refVar7 = True;
+$array = [&$refVar2, &$refVar, &$refVar3, &$refVar4, &$refVar5, &$refVar6, &$refVar7];
+
+foreach ($values as $desc => $needle) {
+ echo "-- $desc --\n";
+ echo "in_array() strict=false\n";
+ var_dump(in_array($needle, $array));
+ echo "in_array() strict=true\n";
+ var_dump(in_array($needle, $array, TRUE));
+}
+
+?>
+--EXPECT--
+-- integer 4 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- string '4' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float 4.00 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'b' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string '5' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- integer -2 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float -2.0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float -2.98989 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string '-.9' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'True' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- empty string --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- empty array --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- null --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- string 'ab' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string 'abcd' --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- float 0.0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- integer -0 --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- string with null bytes --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
+-- enum Sample::A --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(true)
+-- enum Sample::B --
+in_array() strict=false
+bool(true)
+in_array() strict=true
+bool(false)
diff --git a/ext/standard/tests/array/in_array_variation1.phpt b/ext/standard/tests/array/in_array_variation1.phpt
deleted file mode 100644
index 0c88a453320..00000000000
--- a/ext/standard/tests/array/in_array_variation1.phpt
+++ /dev/null
@@ -1,635 +0,0 @@
---TEST--
-Test in_array() function : usage variations - different needdle values
---FILE--
-<?php
-/* Test in_array() with different possible needle values */
-
-echo "*** Testing in_array() with different needle values ***\n";
-$arrays = array (
- array(0),
- array("a" => "A", 2 => "B", "C" => 3, 4 => 4, "one" => 1, "" => NULL, "b", "ab", "abcd"),
- array(4, array(1, 2 => 3), "one" => 1, "5" => 5 ),
- array(-1, -2, -3, -4, -2.989888, "-0.005" => "neg0.005", 2 => "float2", "-.9" => -.9),
- array(TRUE, FALSE),
- array("", array()),
- array("abcd\x00abcd\x00abcd"),
- array("abcd\tabcd\nabcd\rabcd\0abcdefghij")
-);
-
-$array_compare = array (
- 4,
- "4",
- 4.00,
- "b",
- "5",
- -2,
- -2.0,
- -2.98989,
- "-.9",
- "True",
- "",
- array(),
- NULL,
- "ab",
- "abcd",
- 0.0,
- -0,
- "abcd\x00abcd\x00abcd"
-);
-/* loop to check if elements in $array_compare exist in $arrays
- using in_array() */
-$counter = 1;
-foreach($arrays as $array) {
- foreach($array_compare as $compare) {
- echo "-- Iteration $counter --\n";
- //strict option OFF
- var_dump(in_array($compare,$array));
- //strict option ON
- var_dump(in_array($compare,$array,TRUE));
- //strict option OFF
- var_dump(in_array($compare,$array,FALSE));
- $counter++;
- }
-}
-
-echo "Done\n";
-?>
---EXPECT--
-*** Testing in_array() with different needle values ***
--- Iteration 1 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 2 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 3 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 4 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 5 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 6 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 7 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 8 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 9 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 10 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 11 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 12 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 13 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 14 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 15 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 16 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 17 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 18 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 19 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 20 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 21 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 22 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 23 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 24 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 25 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 26 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 27 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 28 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 29 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 30 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 31 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 32 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 33 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 34 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 35 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 36 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 37 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 38 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 39 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 40 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 41 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 42 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 43 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 44 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 45 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 46 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 47 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 48 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 49 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 50 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 51 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 52 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 53 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 54 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 55 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 56 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 57 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 58 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 59 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 60 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 61 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 62 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 63 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 64 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 65 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 66 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 67 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 68 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 69 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 70 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 71 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 72 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 73 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 74 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 75 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 76 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 77 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 78 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 79 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 80 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 81 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 82 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 83 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 84 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 85 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 86 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 87 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 88 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 89 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 90 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 91 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 92 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 93 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 94 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 95 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 96 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 97 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 98 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 99 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 100 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 101 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 102 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 103 --
-bool(true)
-bool(false)
-bool(true)
--- Iteration 104 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 105 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 106 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 107 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 108 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 109 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 110 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 111 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 112 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 113 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 114 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 115 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 116 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 117 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 118 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 119 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 120 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 121 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 122 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 123 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 124 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 125 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 126 --
-bool(true)
-bool(true)
-bool(true)
--- Iteration 127 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 128 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 129 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 130 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 131 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 132 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 133 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 134 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 135 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 136 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 137 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 138 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 139 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 140 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 141 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 142 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 143 --
-bool(false)
-bool(false)
-bool(false)
--- Iteration 144 --
-bool(false)
-bool(false)
-bool(false)
-Done
diff --git a/ext/standard/tests/array/in_array_with_ref.phpt b/ext/standard/tests/array/in_array_with_ref.phpt
deleted file mode 100644
index 2ad3667d232..00000000000
--- a/ext/standard/tests/array/in_array_with_ref.phpt
+++ /dev/null
@@ -1,14 +0,0 @@
---TEST--
-in_array() with references
---FILE--
-<?php
-
-$value = 42;
-$array = [&$value];
-var_dump(in_array(42, $array, false));
-var_dump(in_array(42, $array, true));
-
-?>
---EXPECT--
-bool(true)
-bool(true)