PHP空数组值的声明

3

我能否以某种方式声明数组的值为字符串、整数等,而不必向其中添加值?

例如:

public $arr = array(string);

坚持使用强类型数组是一个好主意,但你不能在普通数组中实现这一点。不过我认为你可以设置一个类作为ArrayAccess,并通过抛出异常来拒绝非字符串值。 - halfer
如果它是一个数组,那么它的类型就一个数组。 - fedorqui
6个回答

5
您可以像您认为的那样轻松使用此功能:
$arr = [];

2

简短回答,不可以。PHP是一种弱类型语言,不会强制类型。最接近的东西是类型提示,但在这种情况下并不能帮助您。


2

1

可以的

$arr = array();
settype($arr,'string');

PHP settype

{{链接1:PHP settype}}


这甚至离OP想要的还很远。 - Alex Shesterov
你能否请解释一下他想要什么? - Shakti Patel
简而言之:他想声明一个类型安全的数组,即所有元素都是指定类型的数组。 使用PHP数组不可能实现(虽然可以用类模拟类型安全的数组)。 - Alex Shesterov
我从未见过这个关键字,很有趣。然而,这并不是OP想要的 - 这只是将值重新转换为新类型,而不是拒绝存储错误类型的值。请参阅我在Q下的评论,了解一种可行的方法。 - halfer

0

这只是一个想法,可能不正确,但你可以测试一下

public function login()
{
    $this->index();//not done yet
    $arr = array();
    foreach ($arr as $element)
    {
        $element = '';
        // or $element = (string)$element;
    }
}

也许更好的方法是使用stdClass对象而不是数组;或者是stdClass对象的数组。

最终使用了 stdClass 对象。感谢建议。 - Sune

0

你不能声明一个数组的值为字符串、整数等,而不定义该值。值 null(这是最接近于未定义值的值)具有类型 null


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接