PHP中(数组)的目的

时间:2019-06-07 01:40:46

标签: php arrays

我在以下代码中在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)的作用吗?

3 个答案:

答案 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作业作为数组返回。

当前该源代码在这里: 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

答案 2 :(得分:0)

这实际上称为类型变戏法或类型转换。

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

但是,某些类型不能有效地转换为其他类型,例如某些示例将数组转换为字符串,int或类对象,PHP会发出如下通知:

Notice: Array to string conversion in /path/file.php on line 10

,该数组将转换为内容为“ Array”的字符串。但是,您的PHP不会引发错误,因此脚本将继续运行,并且无法按预期运行。