首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中(array)的用途

问PHP中(array)的用途
EN

Stack Overflow用户
提问于 2019-06-07 09:40:46
回答 3查看 50关注 0票数 2

我在下面的代码中遇到了WordPress中的数组,但是在PHP手动搜索( (array) )中找不到任何东西(https://www.php.net/manual-lookup.php?pattern=%28array%29&scope=quickref)

代码语言:javascript
复制
foreach ( (array) $cron as $timestamp => $hooks) {
    foreach ( (array) $hooks as $hook => $args ) {
        $key = md5(serialize($args['args']));
        $new_cron[$timestamp][$hook][$key] = $args;
    }
}

有人能解释一下这个(array)是做什么的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-07 10:00:49

这称为变量类型转换(AKA类型转换或类型杂耍)。您的意思是希望将$cronhooks转换为数组并作为数组进行计算。看看这个例子:

代码语言:javascript
复制
$a = (int) 5.3;
print($a);
5

(int)表示我想要一个5.3的整数。所以PHP会对其进行转换。

票数 2
EN

Stack Overflow用户

发布于 2019-06-07 09:56:45

它将变量转换为数组。也许$cronhooks是一个对象而不是数组,不能作为键=>值数组进行迭代。

这是PHP https://www.php.net/manual/en/language.types.type-juggling.php中的键入Jugling的手册页面

可以使用index或key访问数组成员,如下所示:

代码语言:javascript
复制
$cronhooks[0];     // the first member
$people['tom'];    // the member with the key 'tom'

对象和类具有使用object运算符访问的成员:

代码语言:javascript
复制
$person->name;    // name property of a person object
$person->save();  // might be a method to save the person back to the database

有趣的是,wordpress有一个内置的名为_get_cron_array()的内部函数,它应该以数组的形式返回cron作业。

目前源代码在这里:https://github.com/WordPress/WordPress/blob/056b9c47a2114a23e9a892df2d5f79856dbe5a73/wp-includes/cron.php#L924-L945

但即使在他们自己的代码中,他们也将其转换为数组,这似乎很奇怪,因为该函数声称在其名称中返回一个数组!

这个例子就是:https://github.com/WordPress/WordPress/blob/056b9c47a2114a23e9a892df2d5f79856dbe5a73/wp-includes/cron.php#L95

无论如何,探索这一点很有趣:D

票数 1
EN

Stack Overflow用户

发布于 2019-06-23 01:36:05

这实际上就是所谓的类型转换,或类型转换。

在某些情况下(例如int到float,int到string,string到数组,int到数组),类型将被转换(允许常规字符串或int循环,尽管如上例所示)。

但是,某些类型不能有效地转换为另一种类型,例如在某些示例中,数组转换为字符串、int或类对象,PHP将发出如下通知:

代码语言:javascript
复制
Notice: Array to string conversion in /path/file.php on line 10

并且该数组将被转换为内容为" array“的字符串。但是,您的PHP不会抛出错误,因此脚本将继续运行,并且不会像您预期的那样工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56486976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档