問題
PHPでarrayを乗算してしまうと Fatal error: Unsupported operand types
となるはずですが、下記のコードでは Fatal error にならず、原因がわかりません。
説明を含めて再現するパターンを下記のソースコードに書きました。
4つ目の var_dump
について、 &&
の前の部分では $i2
が array
なため Fatal error になることは期待通りです。
5つ目の var_dump
について、 &&
の後ろの $i3
が array
ですが、なぜか Fatal error にならず評価できてしまっています。
下記のコードをファイルとして保存し、コマンドラインで実行しています。(var_dumpのみコメントアウトしています)
ソースコード
PHP
1<?php 2 3$_factor = 1; 4 5$i1 = 1; 6$i2 = 1; 7//var_dump($i1 < $i2 * $_factor);// => false 8// Expected. 9 10$i1 = 1; 11$i2 = []; 12//var_dump($i1 < $i2 * $_factor);// => Fatal error: Unsupported operand types 13// Expected. 14 15$i1 = 1; 16$i2 = 1; 17$i3 = 1; 18// var_dump(($i1 < $i2 * $_factor) && ($i1 < $i3 * $_factor));// => false 19// Expected. 20 21$i1 = 1; 22$i2 = []; 23$i3 = 1; 24//var_dump(($i1 < $i2 * $_factor) && ($i1 < $i3 * $_factor));// => Fatal error: Unsupported operand types 25// Expected. 26 27$i1 = 1; 28$i2 = 1; 29$i3 = []; 30// var_dump(($i1 < $i2 * $_factor) && ($i1 < $i3 * $_factor));// => false 31// Why do NOT Fatal error??? 32
補足
PHPのバージョン
% php --version PHP 5.6.30 (cli) (built: Aug 8 2017 12:20:45) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/19 11:41
退会済みユーザー
2018/04/19 11:41
2018/04/19 11:49