遇到个数组嵌套复用的问题,为什么会多出一层array来呢

在处理PHP代码时,遇到了一个关于数组嵌套复用的奇怪现象,发现每次调用都会多出一层array。经过分析,问题出在对象与数组之间的转换以及复用方法上。本文将探讨这个问题的原因及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//目标效果
$htmlval = (object)array(
"files" =>array(
    'filter'=>array(
    (object)array('fName'=>"fileindex",'logic'=>"like",'Cid'=>'f_val1'),
    (object)array('fName'=>"title",'logic'=>"like",'Cid'=>'f_val2')
    )
)
);
print_r($htmlval);

stdClass Object
(
    [files] => Array
        (
            [filter] => Array
                (
                    [0] => stdClass Object
                        (
                            [fName] => fileindex
                            [logic] => like
                            [Cid] => f_val1
                        )

                    [1] => stdClass Object
                        (
                            [fName] => title
                            [logic] => like
                            [Cid] => f_val2
                        )

                )

        )

)

//我的做法1,出错
$filter="filter"=>array(
    (object)array('fName'=>"fileindex",'logic'=>"like",'Cid'=>'f_val1'),
    (object)array('fName'=>"title",'logic'=>"like",'Cid'=>'f_val2')
    );
//我的做法2
$filter=array(
    'filter'=>array(
    (object)array('fName'=>"fileindex",'logic'=>"like",'Cid'=>'f_val1'),
    (object)array('fName'=>"title",'logic'=>"like",'Cid'=>'f_val2')
    ));
//我的做法3
$filter['filter']=array(
    (object)array('fName'=>"fileindex",'logic'=>"like",'Cid'=>'f_val1'),
    (object)array('fName'=>"title",'logic'=>"like",'Cid'=>'f_val2')
    );

$htmlval = (object)array(
"files" =>array(
    $filter
)
);
print_r($htmlval);

//得到结果如下
stdClass Object
(
    [files] => Array
        (
            [0] => Array    //问题在这里,多了一层array嵌套,经过各种测试总算去掉了!!!
                (
                    [filter] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [fName] => fileindex
                                    [logic] => like
                                    [Cid] => f_val1
                                )

                            [1] => stdClass Object
                                (
                                    [fName] => title
                                    [logic] => like
                                    [Cid] => f_val2
                                )

                        )

                )

        )

)

//正确做法
$filter=array(
    (object)array('fName'=>"fileindex",'logic'=>"like",'Cid'=>'f_val1'),
    (object)array('fName'=>"title",'logic'=>"like",'Cid'=>'f_val2')
    );

$htmlval = (object)array(
"files" =>array(
    "filter"=>$filter   
)
);
print_r($htmlval);

stdClass Object
(
    [files] => Array
        (
            [filter] => Array
                (
                    [0] => stdClass Object
                        (
                            [fName] => fileindex
                            [logic] => like
                            [Cid] => f_val1
                        )

                    [1] => stdClass Object
                        (
                            [fName] => title
                            [logic] => like
                            [Cid] => f_val2
                        )

                )

        )

)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值