我在下面的代码中遇到了WordPress中的数组,但是在PHP手动搜索( (array) )中找不到任何东西(https://www.php.net/manual-lookup.php?pattern=%28array%29&scope=quickref)
foreach ( (array) $cron as $timestamp => $hooks) {
foreach ( (array) $hooks as $hook => $args ) {
$key = md5(serialize($args['args']));
$new_cron[$timestamp][$hook][$key] = $args;
}
}有人能解释一下这个(array)是做什么的吗?
发布于 2019-06-07 10:00:49
这称为变量类型转换(AKA类型转换或类型杂耍)。您的意思是希望将$cronhooks转换为数组并作为数组进行计算。看看这个例子:
$a = (int) 5.3;
print($a);
5(int)表示我想要一个5.3的整数。所以PHP会对其进行转换。
发布于 2019-06-07 09:56:45
它将变量转换为数组。也许$cronhooks是一个对象而不是数组,不能作为键=>值数组进行迭代。
这是PHP https://www.php.net/manual/en/language.types.type-juggling.php中的键入Jugling的手册页面
可以使用index或key访问数组成员,如下所示:
$cronhooks[0]; // the first member
$people['tom']; // the member with the key 'tom'对象和类具有使用object运算符访问的成员:
$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作业。
但即使在他们自己的代码中,他们也将其转换为数组,这似乎很奇怪,因为该函数声称在其名称中返回一个数组!
无论如何,探索这一点很有趣:D
发布于 2019-06-23 01:36:05
这实际上就是所谓的类型转换,或类型转换。
在某些情况下(例如int到float,int到string,string到数组,int到数组),类型将被转换(允许常规字符串或int循环,尽管如上例所示)。
但是,某些类型不能有效地转换为另一种类型,例如在某些示例中,数组转换为字符串、int或类对象,PHP将发出如下通知:
Notice: Array to string conversion in /path/file.php on line 10并且该数组将被转换为内容为" array“的字符串。但是,您的PHP不会抛出错误,因此脚本将继续运行,并且不会像您预期的那样工作。
https://stackoverflow.com/questions/56486976
复制相似问题