一个朋友在一次采访中提出了这个问题:
x的值应该是什么,以便以下函数返回true。
<?php
function returnTrue( $x ){
$x[$x] = $x;
return $x != true;
}
$res = returnTrue(YOUR_ANSWER);
var_dump($res);
?>
答案最多应为3个字符
答案 0 :(得分:2)
那很有趣,我快速测试了一下,答案是:
$res = returnTrue([]);
答案 1 :(得分:2)
当然是
returntrue([]);
作品 但并非完全正常,因为您会收到消息
警告:...中的偏移量类型非法。
您必须记住,字符串类型还允许使用arrayAccess样式,因此
正确的答案是
$res=returntrue('0');
var_dump($res)// print true
当您将字符串'0'
作为参数时,此代码$x[$x]=$x
会再次给出相同的字符串'0'
wich不会产生任何警告,并且绝对会返回true,因为string '0'
将始终被评估为false
,而false!=true
返回true
答案 2 :(得分:0)
对于现在删除的其他帖子,我也设法解决了。
function returnTrue( $x )
{
if( !is_array( $x ) ) {
return false;
}
foreach( $x as $x ) {
$x[] = $x;
}
return $x;
}
var_dump(returnTrue([!0]));