有谁知道通过将变量转换为数组而不是先检查它会发生的任何问题、性能或其他问题?
// $v could be a array or string
$v = array('1','2','3');
或
$v = '1';
代替:
if (is_array($v)) foreach ($v as $value) {/* do this */} else {/* do this */}
我已经开始使用:
foreach((array) $v as $value) {
// do this
}
它大大减少了代码的重复 - 但我考虑的是性能,而不是丑陋的代码。
此外,有谁知道 php 如何处理将数组转换为数组?没有抛出任何错误,但是 php 引擎是否会检查它是否是一个数组,然后在执行转换过程之前返回结果?
最佳答案
第一:过早的优化是万恶之源。永远不要让性能影响您的编码风格!
当您需要一个数组,但又想允许单个值时,转换为数组可以使用一些不错的技巧
$a = (array) "value"; // => array("value")
请注意,这可能会导致一些不需要的(或想要的,但不同的)行为
$a = new stdClass;
$a->foo = 'bar';
$a = (array) $a; // => array("foo" => "bar");
但是,这个
if(is_array($v)) {
foreach($v as $whatever)
{
/* .. */
}
} else {
/* .. */
}
允许您决定每种可能发生的类型应该发生什么。如果您“盲目地”将其转换为数组,这是不可能的。
简而言之:选择一个更适合情况需要的。
关于php - 转换为数组 VS is_array(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6126931/