我在以下代码中在WordPress中遇到了(array)
,但是在PHP手动搜索(数组)中却找不到任何内容(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)
的作用吗?
答案 0 :(得分:2)
这称为强制转换变量(AKA强制转换或类型变戏法)。您是说要将$ cronhooks转换为数组并进行评估。看这个例子:
$a = (int) 5.3;
print($a);
5
(int)表示我想要5.3的整数。因此PHP会将其转换。
答案 1 :(得分:1)
它将变量转换为数组。也许$ cronhooks是一个对象而不是一个数组,并且不能作为键=>值数组进行迭代。
这是PHP中的类型Jugling的手册页 https://www.php.net/manual/en/language.types.type-juggling.php
可以使用索引或键来访问数组成员,如下所示:
$cronhooks[0]; // the first member
$people['tom']; // the member with the key 'tom'
对象和类具有使用对象运算符访问的成员:
$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
答案 2 :(得分:0)
这实际上称为类型变戏法或类型转换。
在某些情况下(例如,int浮点数,int转换为字符串,string转换为数组,int转换为数组),将转换类型(如上例所示,允许循环常规字符串或int)。
但是,某些类型不能有效地转换为其他类型,例如某些示例将数组转换为字符串,int或类对象,PHP会发出如下通知:
Notice: Array to string conversion in /path/file.php on line 10
,该数组将转换为内容为“ Array”的字符串。但是,您的PHP不会引发错误,因此脚本将继续运行,并且无法按预期运行。