Skip to content

Instantly share code, notes, and snippets.

@bennadel
Created February 24, 2016 12:22
Strange arrayContains() Behavior In For-Loop In ColdFusion 10
<cfscript>
// Build up a collection of mixed-type values. These are all "simple" values, but
// some of them are more strongly associated with a given data type.
values = [
1,
"2",
"3.0",
javaCast( "int", 4 ),
javaCast( "double", 5 ),
javaCast( "long", 6 ),
7.0,
javaCast( "string", "8" ),
javaCast( "char", "9" ),
javaCast( "float", "10.0" )
];
writeOutput( "<h2>#server.coldfusion.productVersion#</h2>" );
writeOutput( "<div style='float: left ; width: 150px ;'>" );
writeOutput( "<h3>Loop</h3>" );
// First, let's test the arrayContains() through a loop.
for ( i = 1 ; i <= 10 ; i++ ) {
writeOutput( "Testing #i#: <br />" );
writeOutput( arrayContains( values, i ) & "<br />" );
writeOutput( arrayContains( values, "#i#" ) & "<br />" );
writeOutput( arrayContains( values, "#i#.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", i ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", i ) ) & "<br />" );
writeOutput( "<br />" );
}
writeOutput( "</div>" );
writeOutput( "<div style='float: left ; width: 150px ;'>" );
writeOutput( "<h3>Hard-Coded</h3>" );
// Now, let's run the same exact tests, but with hard-coded values.
writeOutput( "Testing 1: <br />" );
writeOutput( arrayContains( values, 1 ) & "<br />" );
writeOutput( arrayContains( values, "1" ) & "<br />" );
writeOutput( arrayContains( values, "1.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 1 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 1 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "Testing 2: <br />" );
writeOutput( arrayContains( values, 2 ) & "<br />" );
writeOutput( arrayContains( values, "2" ) & "<br />" );
writeOutput( arrayContains( values, "2.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 2 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 2 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "Testing 3: <br />" );
writeOutput( arrayContains( values, 3 ) & "<br />" );
writeOutput( arrayContains( values, "3" ) & "<br />" );
writeOutput( arrayContains( values, "3.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 3 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 3 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "Testing 4: <br />" );
writeOutput( arrayContains( values, 4 ) & "<br />" );
writeOutput( arrayContains( values, "4" ) & "<br />" );
writeOutput( arrayContains( values, "4.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 4 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 4 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "Testing 5: <br />" );
writeOutput( arrayContains( values, 5 ) & "<br />" );
writeOutput( arrayContains( values, "5" ) & "<br />" );
writeOutput( arrayContains( values, "5.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 5 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 5 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "Testing 6: <br />" );
writeOutput( arrayContains( values, 6 ) & "<br />" );
writeOutput( arrayContains( values, "6" ) & "<br />" );
writeOutput( arrayContains( values, "6.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 6 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 6 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "Testing 7: <br />" );
writeOutput( arrayContains( values, 7 ) & "<br />" );
writeOutput( arrayContains( values, "7" ) & "<br />" );
writeOutput( arrayContains( values, "7.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 7 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 7 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "Testing 8: <br />" );
writeOutput( arrayContains( values, 8 ) & "<br />" );
writeOutput( arrayContains( values, "8" ) & "<br />" );
writeOutput( arrayContains( values, "8.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 8 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 8 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "Testing 9: <br />" );
writeOutput( arrayContains( values, 9 ) & "<br />" );
writeOutput( arrayContains( values, "9" ) & "<br />" );
writeOutput( arrayContains( values, "9.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 9 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 9 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "Testing 10: <br />" );
writeOutput( arrayContains( values, 10 ) & "<br />" );
writeOutput( arrayContains( values, "10" ) & "<br />" );
writeOutput( arrayContains( values, "10.0" ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "int", 10 ) ) & "<br />" );
writeOutput( arrayContains( values, javaCast( "float", 10 ) ) & "<br />" );
writeOutput( "<br />" );
writeOutput( "</div>" );
</cfscript>
writeOutput( arrayContains( values, i ) & "<br />" );
writeOutput( arrayContains( values, "#i#" ) & "<br />" );
writeOutput( arrayContains( values, 4 ) & "<br />" );
writeOutput( arrayContains( values, "4" ) & "<br />" );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment