PHP 短格式(一行)添加带键的子数组,如果子数组不为空

我已经创建了一些函数来创建树结构,在这种情况下,我使用以下代码片段的一部分来添加子数组(如果至少存在一个子数组)。


    <?php


    function addArrayIfNotEmpty($entire_array, $key, $childArray){


    /*

    ### BEGIN: Possible as one line? ###

    */

    if (count($childArray) > 0) {

        $entire_array[$key] = $childArray;      

    }

    /*

    ### END: Possible as one line? ###

    */


    return $entire_array;

}



$my_array = array();


$first_array = array("orange", "banana");

$second_array = array();


$my_array = addArrayIfNotEmpty($my_array, "first", $first_array);

$my_array = addArrayIfNotEmpty($my_array, "second", $second_array);


var_dump($my_array);

在我的真实代码中,我只在带有“BEGIN”和“END”的注释之间使用 if 条件,但我想将此 if 条件更改为一行。


我想像这样的事情:


$entire_array[$key] = count($childArray) > 0 ? $childArray : null;

但在这种情况下,我会得到一个空的(不必要的)子数组。


在这种情况下我该怎么办?


斯蒂芬大帝
浏览 115回答 1
1回答

德玛西亚99

您可以使用三元运算符作为语句并将赋值放在部分中true:function addArrayIfNotEmpty($entire_array, $key, $childArray){&nbsp; &nbsp; count($childArray) ? $entire_array[$key] = $childArray : null;&nbsp; &nbsp; return $entire_array;}但是您现有的if陈述更具可读性。测试代码:$entire_array = array();$entire_array = addArrayIfNotEmpty($entire_array, 'key1', array());print_r($entire_array);$entire_array = addArrayIfNotEmpty($entire_array, 'key2', array('hello'));print_r($entire_array);输出:Array()Array(&nbsp; &nbsp; [key2] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] => hello&nbsp; &nbsp; &nbsp; &nbsp; ))3v4l.org 上的演示
打开App,查看更多内容
随时随地看视频慕课网APP