Ste*_*314 5 php arrays performance casting
有没有人知道任何问题,性能或其他问题,可以通过将变量转换为数组而不是先检查它来实现?
// $v could be a array or string
$v = array('1','2','3');
Run Code Online (Sandbox Code Playgroud)
要么
$v = '1';
Run Code Online (Sandbox Code Playgroud)
代替:
if (is_array($v)) foreach ($v as $value) {/* do this */} else {/* do this */}
Run Code Online (Sandbox Code Playgroud)
我已经开始使用:
foreach((array) $v as $value) {
// do this
}
Run Code Online (Sandbox Code Playgroud)
它会停止重复代码 - 但性能是我的想法,而不是丑陋的代码.
另外,有谁知道php如何处理将数组转换为数组?没有抛出任何错误,但是php引擎是否检查它是否为数组,然后在执行转换过程之前返回结果?
第一:过早优化是万恶之源.永远不要让性能影响您的编码风格!
当你需要一个数组但是想要允许单个值时,转换为数组允许一些不错的技巧
$a = (array) "value"; // => array("value")
Run Code Online (Sandbox Code Playgroud)
请注意,这可能会导致一些不需要的(或想要的,但不同的)行为
$a = new stdClass;
$a->foo = 'bar';
$a = (array) $a; // => array("foo" => "bar");
Run Code Online (Sandbox Code Playgroud)
但是,这一个
if(is_array($v)) {
foreach($v as $whatever)
{
/* .. */
}
} else {
/* .. */
}
Run Code Online (Sandbox Code Playgroud)
允许您决定可能发生的每种类型应该发生什么.如果你将它"盲目地"投射到数组中,这是不可能的.
简而言之:只需选择最符合情况需求的那个.