返回真实的PHP

时间:2018-10-20 10:07:26

标签: php

一个朋友在一次采访中提出了这个问题:

x的值应该是什么,以便以下函数返回true。

<?php
function returnTrue( $x ){
    $x[$x] = $x;
    return $x != true;
}
$res = returnTrue(YOUR_ANSWER);
var_dump($res);
?>

答案最多应为3个字符

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]));