compare_002_64bit.phpt 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. --TEST--
  2. comparing different variables for identity
  3. --SKIPIF--
  4. <?php if (PHP_INT_SIZE != 8) die("skip this test is for 64bit platform only"); ?>
  5. --FILE--
  6. <?php
  7. class test {
  8. }
  9. $a = array(
  10. array(1,2,3),
  11. "",
  12. 1,
  13. 2.5,
  14. 0,
  15. "string",
  16. "123",
  17. "2.5",
  18. NULL,
  19. true,
  20. false,
  21. new stdclass,
  22. new stdclass,
  23. new test,
  24. array(),
  25. -PHP_INT_MAX-1,
  26. (string)(-PHP_INT_MAX-1),
  27. );
  28. $var_cnt = count($a);
  29. function my_dump($var) {
  30. ob_start();
  31. var_dump($var);
  32. $buf = ob_get_clean();
  33. echo str_replace("\n", "", $buf);
  34. }
  35. foreach($a as $var) {
  36. for ($i = 0; $i < $var_cnt; $i++) {
  37. my_dump($var);
  38. echo ($var === $a[$i]) ? " === " : " !== ";
  39. my_dump($a[$i]);
  40. echo "\n";
  41. }
  42. }
  43. echo "Done\n";
  44. ?>
  45. --EXPECTF--
  46. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} === array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  47. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== string(0) ""
  48. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== int(1)
  49. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== float(2.5)
  50. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== int(0)
  51. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== string(6) "string"
  52. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== string(3) "123"
  53. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== string(3) "2.5"
  54. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== NULL
  55. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== bool(true)
  56. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== bool(false)
  57. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== object(stdClass)#%d (0) {}
  58. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== object(stdClass)#%d (0) {}
  59. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== object(test)#%d (0) {}
  60. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== array(0) {}
  61. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== int(-9223372036854775808)
  62. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)} !== string(20) "-9223372036854775808"
  63. string(0) "" !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  64. string(0) "" === string(0) ""
  65. string(0) "" !== int(1)
  66. string(0) "" !== float(2.5)
  67. string(0) "" !== int(0)
  68. string(0) "" !== string(6) "string"
  69. string(0) "" !== string(3) "123"
  70. string(0) "" !== string(3) "2.5"
  71. string(0) "" !== NULL
  72. string(0) "" !== bool(true)
  73. string(0) "" !== bool(false)
  74. string(0) "" !== object(stdClass)#%d (0) {}
  75. string(0) "" !== object(stdClass)#%d (0) {}
  76. string(0) "" !== object(test)#%d (0) {}
  77. string(0) "" !== array(0) {}
  78. string(0) "" !== int(-9223372036854775808)
  79. string(0) "" !== string(20) "-9223372036854775808"
  80. int(1) !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  81. int(1) !== string(0) ""
  82. int(1) === int(1)
  83. int(1) !== float(2.5)
  84. int(1) !== int(0)
  85. int(1) !== string(6) "string"
  86. int(1) !== string(3) "123"
  87. int(1) !== string(3) "2.5"
  88. int(1) !== NULL
  89. int(1) !== bool(true)
  90. int(1) !== bool(false)
  91. int(1) !== object(stdClass)#%d (0) {}
  92. int(1) !== object(stdClass)#%d (0) {}
  93. int(1) !== object(test)#%d (0) {}
  94. int(1) !== array(0) {}
  95. int(1) !== int(-9223372036854775808)
  96. int(1) !== string(20) "-9223372036854775808"
  97. float(2.5) !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  98. float(2.5) !== string(0) ""
  99. float(2.5) !== int(1)
  100. float(2.5) === float(2.5)
  101. float(2.5) !== int(0)
  102. float(2.5) !== string(6) "string"
  103. float(2.5) !== string(3) "123"
  104. float(2.5) !== string(3) "2.5"
  105. float(2.5) !== NULL
  106. float(2.5) !== bool(true)
  107. float(2.5) !== bool(false)
  108. float(2.5) !== object(stdClass)#%d (0) {}
  109. float(2.5) !== object(stdClass)#%d (0) {}
  110. float(2.5) !== object(test)#%d (0) {}
  111. float(2.5) !== array(0) {}
  112. float(2.5) !== int(-9223372036854775808)
  113. float(2.5) !== string(20) "-9223372036854775808"
  114. int(0) !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  115. int(0) !== string(0) ""
  116. int(0) !== int(1)
  117. int(0) !== float(2.5)
  118. int(0) === int(0)
  119. int(0) !== string(6) "string"
  120. int(0) !== string(3) "123"
  121. int(0) !== string(3) "2.5"
  122. int(0) !== NULL
  123. int(0) !== bool(true)
  124. int(0) !== bool(false)
  125. int(0) !== object(stdClass)#%d (0) {}
  126. int(0) !== object(stdClass)#%d (0) {}
  127. int(0) !== object(test)#%d (0) {}
  128. int(0) !== array(0) {}
  129. int(0) !== int(-9223372036854775808)
  130. int(0) !== string(20) "-9223372036854775808"
  131. string(6) "string" !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  132. string(6) "string" !== string(0) ""
  133. string(6) "string" !== int(1)
  134. string(6) "string" !== float(2.5)
  135. string(6) "string" !== int(0)
  136. string(6) "string" === string(6) "string"
  137. string(6) "string" !== string(3) "123"
  138. string(6) "string" !== string(3) "2.5"
  139. string(6) "string" !== NULL
  140. string(6) "string" !== bool(true)
  141. string(6) "string" !== bool(false)
  142. string(6) "string" !== object(stdClass)#%d (0) {}
  143. string(6) "string" !== object(stdClass)#%d (0) {}
  144. string(6) "string" !== object(test)#%d (0) {}
  145. string(6) "string" !== array(0) {}
  146. string(6) "string" !== int(-9223372036854775808)
  147. string(6) "string" !== string(20) "-9223372036854775808"
  148. string(3) "123" !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  149. string(3) "123" !== string(0) ""
  150. string(3) "123" !== int(1)
  151. string(3) "123" !== float(2.5)
  152. string(3) "123" !== int(0)
  153. string(3) "123" !== string(6) "string"
  154. string(3) "123" === string(3) "123"
  155. string(3) "123" !== string(3) "2.5"
  156. string(3) "123" !== NULL
  157. string(3) "123" !== bool(true)
  158. string(3) "123" !== bool(false)
  159. string(3) "123" !== object(stdClass)#%d (0) {}
  160. string(3) "123" !== object(stdClass)#%d (0) {}
  161. string(3) "123" !== object(test)#%d (0) {}
  162. string(3) "123" !== array(0) {}
  163. string(3) "123" !== int(-9223372036854775808)
  164. string(3) "123" !== string(20) "-9223372036854775808"
  165. string(3) "2.5" !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  166. string(3) "2.5" !== string(0) ""
  167. string(3) "2.5" !== int(1)
  168. string(3) "2.5" !== float(2.5)
  169. string(3) "2.5" !== int(0)
  170. string(3) "2.5" !== string(6) "string"
  171. string(3) "2.5" !== string(3) "123"
  172. string(3) "2.5" === string(3) "2.5"
  173. string(3) "2.5" !== NULL
  174. string(3) "2.5" !== bool(true)
  175. string(3) "2.5" !== bool(false)
  176. string(3) "2.5" !== object(stdClass)#%d (0) {}
  177. string(3) "2.5" !== object(stdClass)#%d (0) {}
  178. string(3) "2.5" !== object(test)#%d (0) {}
  179. string(3) "2.5" !== array(0) {}
  180. string(3) "2.5" !== int(-9223372036854775808)
  181. string(3) "2.5" !== string(20) "-9223372036854775808"
  182. NULL !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  183. NULL !== string(0) ""
  184. NULL !== int(1)
  185. NULL !== float(2.5)
  186. NULL !== int(0)
  187. NULL !== string(6) "string"
  188. NULL !== string(3) "123"
  189. NULL !== string(3) "2.5"
  190. NULL === NULL
  191. NULL !== bool(true)
  192. NULL !== bool(false)
  193. NULL !== object(stdClass)#%d (0) {}
  194. NULL !== object(stdClass)#%d (0) {}
  195. NULL !== object(test)#%d (0) {}
  196. NULL !== array(0) {}
  197. NULL !== int(-9223372036854775808)
  198. NULL !== string(20) "-9223372036854775808"
  199. bool(true) !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  200. bool(true) !== string(0) ""
  201. bool(true) !== int(1)
  202. bool(true) !== float(2.5)
  203. bool(true) !== int(0)
  204. bool(true) !== string(6) "string"
  205. bool(true) !== string(3) "123"
  206. bool(true) !== string(3) "2.5"
  207. bool(true) !== NULL
  208. bool(true) === bool(true)
  209. bool(true) !== bool(false)
  210. bool(true) !== object(stdClass)#%d (0) {}
  211. bool(true) !== object(stdClass)#%d (0) {}
  212. bool(true) !== object(test)#%d (0) {}
  213. bool(true) !== array(0) {}
  214. bool(true) !== int(-9223372036854775808)
  215. bool(true) !== string(20) "-9223372036854775808"
  216. bool(false) !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  217. bool(false) !== string(0) ""
  218. bool(false) !== int(1)
  219. bool(false) !== float(2.5)
  220. bool(false) !== int(0)
  221. bool(false) !== string(6) "string"
  222. bool(false) !== string(3) "123"
  223. bool(false) !== string(3) "2.5"
  224. bool(false) !== NULL
  225. bool(false) !== bool(true)
  226. bool(false) === bool(false)
  227. bool(false) !== object(stdClass)#%d (0) {}
  228. bool(false) !== object(stdClass)#%d (0) {}
  229. bool(false) !== object(test)#%d (0) {}
  230. bool(false) !== array(0) {}
  231. bool(false) !== int(-9223372036854775808)
  232. bool(false) !== string(20) "-9223372036854775808"
  233. object(stdClass)#%d (0) {} !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  234. object(stdClass)#%d (0) {} !== string(0) ""
  235. object(stdClass)#%d (0) {} !== int(1)
  236. object(stdClass)#%d (0) {} !== float(2.5)
  237. object(stdClass)#%d (0) {} !== int(0)
  238. object(stdClass)#%d (0) {} !== string(6) "string"
  239. object(stdClass)#%d (0) {} !== string(3) "123"
  240. object(stdClass)#%d (0) {} !== string(3) "2.5"
  241. object(stdClass)#%d (0) {} !== NULL
  242. object(stdClass)#%d (0) {} !== bool(true)
  243. object(stdClass)#%d (0) {} !== bool(false)
  244. object(stdClass)#%d (0) {} === object(stdClass)#%d (0) {}
  245. object(stdClass)#%d (0) {} !== object(stdClass)#%d (0) {}
  246. object(stdClass)#%d (0) {} !== object(test)#%d (0) {}
  247. object(stdClass)#%d (0) {} !== array(0) {}
  248. object(stdClass)#%d (0) {} !== int(-9223372036854775808)
  249. object(stdClass)#%d (0) {} !== string(20) "-9223372036854775808"
  250. object(stdClass)#%d (0) {} !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  251. object(stdClass)#%d (0) {} !== string(0) ""
  252. object(stdClass)#%d (0) {} !== int(1)
  253. object(stdClass)#%d (0) {} !== float(2.5)
  254. object(stdClass)#%d (0) {} !== int(0)
  255. object(stdClass)#%d (0) {} !== string(6) "string"
  256. object(stdClass)#%d (0) {} !== string(3) "123"
  257. object(stdClass)#%d (0) {} !== string(3) "2.5"
  258. object(stdClass)#%d (0) {} !== NULL
  259. object(stdClass)#%d (0) {} !== bool(true)
  260. object(stdClass)#%d (0) {} !== bool(false)
  261. object(stdClass)#%d (0) {} !== object(stdClass)#%d (0) {}
  262. object(stdClass)#%d (0) {} === object(stdClass)#%d (0) {}
  263. object(stdClass)#%d (0) {} !== object(test)#%d (0) {}
  264. object(stdClass)#%d (0) {} !== array(0) {}
  265. object(stdClass)#%d (0) {} !== int(-9223372036854775808)
  266. object(stdClass)#%d (0) {} !== string(20) "-9223372036854775808"
  267. object(test)#%d (0) {} !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  268. object(test)#%d (0) {} !== string(0) ""
  269. object(test)#%d (0) {} !== int(1)
  270. object(test)#%d (0) {} !== float(2.5)
  271. object(test)#%d (0) {} !== int(0)
  272. object(test)#%d (0) {} !== string(6) "string"
  273. object(test)#%d (0) {} !== string(3) "123"
  274. object(test)#%d (0) {} !== string(3) "2.5"
  275. object(test)#%d (0) {} !== NULL
  276. object(test)#%d (0) {} !== bool(true)
  277. object(test)#%d (0) {} !== bool(false)
  278. object(test)#%d (0) {} !== object(stdClass)#%d (0) {}
  279. object(test)#%d (0) {} !== object(stdClass)#%d (0) {}
  280. object(test)#%d (0) {} === object(test)#%d (0) {}
  281. object(test)#%d (0) {} !== array(0) {}
  282. object(test)#%d (0) {} !== int(-9223372036854775808)
  283. object(test)#%d (0) {} !== string(20) "-9223372036854775808"
  284. array(0) {} !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  285. array(0) {} !== string(0) ""
  286. array(0) {} !== int(1)
  287. array(0) {} !== float(2.5)
  288. array(0) {} !== int(0)
  289. array(0) {} !== string(6) "string"
  290. array(0) {} !== string(3) "123"
  291. array(0) {} !== string(3) "2.5"
  292. array(0) {} !== NULL
  293. array(0) {} !== bool(true)
  294. array(0) {} !== bool(false)
  295. array(0) {} !== object(stdClass)#%d (0) {}
  296. array(0) {} !== object(stdClass)#%d (0) {}
  297. array(0) {} !== object(test)#%d (0) {}
  298. array(0) {} === array(0) {}
  299. array(0) {} !== int(-9223372036854775808)
  300. array(0) {} !== string(20) "-9223372036854775808"
  301. int(-9223372036854775808) !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  302. int(-9223372036854775808) !== string(0) ""
  303. int(-9223372036854775808) !== int(1)
  304. int(-9223372036854775808) !== float(2.5)
  305. int(-9223372036854775808) !== int(0)
  306. int(-9223372036854775808) !== string(6) "string"
  307. int(-9223372036854775808) !== string(3) "123"
  308. int(-9223372036854775808) !== string(3) "2.5"
  309. int(-9223372036854775808) !== NULL
  310. int(-9223372036854775808) !== bool(true)
  311. int(-9223372036854775808) !== bool(false)
  312. int(-9223372036854775808) !== object(stdClass)#%d (0) {}
  313. int(-9223372036854775808) !== object(stdClass)#%d (0) {}
  314. int(-9223372036854775808) !== object(test)#%d (0) {}
  315. int(-9223372036854775808) !== array(0) {}
  316. int(-9223372036854775808) === int(-9223372036854775808)
  317. int(-9223372036854775808) !== string(20) "-9223372036854775808"
  318. string(20) "-9223372036854775808" !== array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3)}
  319. string(20) "-9223372036854775808" !== string(0) ""
  320. string(20) "-9223372036854775808" !== int(1)
  321. string(20) "-9223372036854775808" !== float(2.5)
  322. string(20) "-9223372036854775808" !== int(0)
  323. string(20) "-9223372036854775808" !== string(6) "string"
  324. string(20) "-9223372036854775808" !== string(3) "123"
  325. string(20) "-9223372036854775808" !== string(3) "2.5"
  326. string(20) "-9223372036854775808" !== NULL
  327. string(20) "-9223372036854775808" !== bool(true)
  328. string(20) "-9223372036854775808" !== bool(false)
  329. string(20) "-9223372036854775808" !== object(stdClass)#%d (0) {}
  330. string(20) "-9223372036854775808" !== object(stdClass)#%d (0) {}
  331. string(20) "-9223372036854775808" !== object(test)#%d (0) {}
  332. string(20) "-9223372036854775808" !== array(0) {}
  333. string(20) "-9223372036854775808" !== int(-9223372036854775808)
  334. string(20) "-9223372036854775808" === string(20) "-9223372036854775808"
  335. Done