php - 转换为数组 VS is_array()

标签 php arrays performance casting

有谁知道通过将变量转换为数组而不是先检查它会发生的任何问题、性能或其他问题?

// $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/

相关文章:

c# - LINQ Contains 与 Intersect(与其他任何东西相比!)

javascript - 将语言路径添加到浏览器地址栏中

python - 复制并替换 numpy 数组中的值。nans 将为 nan,但其他值将为零

java - 为什么在 Java 中访问对象字段比访问数组更快?

javascript - Flask Javascript Json 数据 - 未定义

javascript - 重新排序数组以获得所需的输出

ios - UITableViewCell 内容在单独重新加载单元格时闪烁

javascript - WordPress中如何仅在用户滚动页面时显示菜单

javascript - 单击 php 中的脚本时,Elemente 将使其不可见

php - 将变量从 Controller 传递到 opencart 中的 View