类型转换有时也叫强制类型转换。 类型转换是指为了执行某种运算,把两个不同类型的值转换成同一类型。
$baskets = 5 // int
$apples_per_basket = "3" // string
$baskets * $apples_per_basket
# => 15
这种转换可以隐式进行(见上面的例子),也可以用 C 风格的强制类型转换显式完成:
$apples_per_basket = "3" // string
$my_number = (int) $apples_per_basket // cast string to int
# => 3 // int
手动强制类型转换允许的类型有:bool、int、float、string、array、object。
最常见的情况是用强制类型转换把整数(int)变成浮点数(float),或者反过来。
你的朋友 Kojo 是个数字迷。 他有一个用来玩数字的小网站。 Kojo 的编程水平不太好,所以他向你求助。
你要为 Kojo 网站上的新数字游戏构建两个辅助方法,再构建第三个方法来验证用户可以输入的某些内容。
Kojo 网站上的其中一个游戏看起来像一台老虎机,上面有两组带数字的转轮。 每一组数字代表一个数。 为了实现游戏机制,Kojo 需要知道这两个数的和。
编写一个方法 sumUp,它接受两个数组作为形参。
每个数组由一个或多个 0 到 9 之间的数字组成。
这个方法应该把每个数组解释成一个数,并返回这两个数的和。
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->sumUp([1, 2, 3], [0, 7]);
//=> 130
// [1, 2, 3] represents 123 and [0, 7] represents 7.
// 123 + 7 = 130
网站上的另一个游戏是一个叫“Lucky Numbers”的小测验。 用户可以输入一个数,然后看到这个数是否属于某个秘密序列或模式。 “幸运数字”的序列或模式每个月都会变化,每个用户只有有限的尝试次数来猜出它。
本月的幸运数字应该是回文数。 回文数在把数字反转后仍然保持不变。
实现新的 isPalindrome 函数,它接受一个整数作为形参。
如果这个数是回文数,函数应该返回 true,否则返回 false。
输入的整数始终是正整数。
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->isPalindrome(1441);
//=> true
$lucky_numbers->isPalindrome(123);
//=> false
网站上有多个地方设有输入框,用户可以在其中输入数字并点击按钮来触发某些操作。 Kojo 想提升网站的用户体验。 他希望当用户点击按钮、但输入框里的值无效时,显示一条错误信息。
下面是关于输入框的值是如何提供的一些补充说明。
编写一个函数 validate,它接受用户输入作为形参。
如果用户没有提供任何输入,validate 应该返回 'Required field'。
如果输入不代表一个正的非零整数(依据 PHP 类型转换规则),则应返回 'Must be a whole number larger than 0'。
在其他所有情况下,你可以假定输入是有效的,此时返回值应该是一个空字符串。
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->validate('123');
// => ''
$lucky_numbers->validate('');
// => 'Required field'
$lucky_numbers->validate('abc');
// => 'Must be a whole number larger than 0'