我最近遇到了一些代码问题,如下所示:
$key = "upload_8_fid_aids.tmp";
public function to_key($key) {
$s = $this->table;//$s = kv
foreach((array)$key as $k=>$v) {
$s .= '-'.$this->primarykey[$k].'-'.$v;
}
return $s;
}
在foreach循环中有一个(数组)$ key签名,我所遇到的第一件事就是以变量$ k为前缀的“数组”,这是什么意思?第一个想法就是命中在我身上,它将$ k转换为数组,但是,变量$ k是一个字符串,在php中将字符串转换为数组是否合理?我认为这是不合理的。那该数组是什么意思?
提前致谢!
答案 0 :(得分:2)
当你在PHP中将一个字符串强制转换为数组时,它就变成了一个数组,并将字符串推送到它。
$test = "This is a string!";
print_r((array) $test);
输出:
Array
(
[0] => This is a string!
)
那说我发现代码很奇怪,我没有看到循环的需要,它可能只是:
$key = "upload_8_fid_aids.tmp";
public function to_key($key) {
$s = $this->table; //$s = kv
$s .= '-' . $this->primarykey[0] . '-' . $key;
return $s;
}
答案 1 :(得分:2)
括号中的任何类型都告诉PHP将以下内容强制转换为该类型。
在这种情况下,这是一种避免必须检查if( is_array($key))
的便宜方式,只需将其强制为一个。
答案 2 :(得分:0)
将对象转换为数组:
<?php
/*** create an object ***/
$obj = new stdClass;
$obj->foo = 'foo';
$obj->bar = 'bar';
$obj->baz = 'baz';
/*** cast the object ***/
$array = (array) $obj;
/*** show the results ***/
print_r( $array );
?>
结果:
Array
(
[foo] => foo
[bar] => bar
[baz] => baz
)