是否可以使用 implode() 作为条件?如果不是,检查数组是否可以内爆的最佳方法是什么?

Is it possible to use implode() as a condition ? If not, what's the best way to check if the array can be imploded?

我想在循环中内爆一个数组。有时这个数组是一个简单的数组,所以它可以工作,有时它是一个多维数组,我的脚本会抛出一个错误。

是否可以这样做:

if (implode($array) ) {

$builded = implode($array);

}

$array 的示例值:

$array1 = ["cat", "dog"] ;

$array2 = [
    "cat",
    "dog",
    1 => ["wolf", "lion"]
] ;
$array3 = [
    "cat",
    "dog",
     1 => []
] ;

implode() 仅适用于 $array1,数组 $2 和 $3 implode() 合法地给我一个错误:Notice: Array to string conversion in C:\Users[...]2_cms_php_functions\class_json.php on line 153

我知道某些函数返回 false 是可能的,例如 if (file_get_contents($file))。如果不可能,检查数组是否可以内爆的最佳方法是什么?

我知道 if (count($array) == count($array, COUNT_RECURSIVE)) 和其他解决方案检查数组是否是多维的,但这不适用于空子数组(我经常遇到这种情况)。

为此,您可以编写一个简单的函数来检查数组是否递归。如果不是,则函数 returns 为真,否则为假,表明它是否可以内爆。

<?php

function canImplode($data){
    foreach($data as $val){
        if(is_object( $val ) || is_array( $val )) return false;
    }
    return true;
}

if(canImplode($array)){
  $builded = implode($array);
}