繁体   English   中英

PHP中(数组)的目的

[英]purpose of (array) in PHP

我在以下代码中在WordPress中遇到了(array) ,但在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)做什么吗?

这称为转换变量(AKA转换或类型变戏法)。 您是说要将$ cronhooks转换为数组并进行评估。 看这个例子:

$a = (int) 5.3;
print($a);
5

(int)表示我想要5.3的整数。 因此,PHP对其进行了转换。

它将变量转换为数组。 也许$ 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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM