【问题标题】:Add items to nested arrays将项目添加到嵌套数组
【发布时间】:2011-03-25 01:38:09
【问题描述】:

我使用这段代码在数组中创建数组。

array_push($lists, $list);

然后我尝试将项目添加到嵌套数组中:

array_push($lists[$list], $item);

但是得到一个错误:

Warning: array_push() expects parameter 1 to be array, null given in V:\home\...

$list 是某个名称,$item 是一个对象。

如何解决问题?

【问题讨论】:

    标签: php html css arrays


    【解决方案1】:

    这是因为第一个参数为空。假设您使用的是默认索引,您可以执行以下操作:

    $numItems = array_push($lists,$list);
    array_push($lists[$numItems-1],$item)

    【讨论】:

    • 还有其他解决方案吗?两个 array_push 被放置在不同的函数中,并与 foreach 一起使用。所以我不能以这种方式使用 $numItems。
    • 如果你不关心索引,你可以使用:$list[] = $item; 然后$lists[] = $list。但如果没有更多信息,我不确定您到底想完成什么。
    【解决方案2】:

    这会将$list 推到$lists 的末尾并给它一个整数键

    array_push($lists, $list);
    

    这会尝试将 字符串键 访问到不存在的 $lists 中:

    $lists[$list]
    

    所以返回值为null。最后,就好像你做到了一样

    array_push(null, $item);
    

    对于解决方案,我们需要知道您是否在 $lists 上做任何事情,除了推动它。如果你不是,那么:

    $pushed_id = array_push($lists, $list) - 1;
    array_push($lists[$pushed_id], $item);
    

    【讨论】:

    • 您的解决方案无法解决问题。我必须将 $item 推送到 $lists[$list]。问题是如何以正确的方式做到这一点。
    • @Rooney:学会礼貌。 您没有在评论中向我们提供有关 carmstrong 答案的信息,这是必不可少的。 另外,鉴于我们所知道的情况 ,您所要求的内容是不可能的 您可以将状态从第一个函数传递给另一个函数,或者$list 拥有(或可以添加)自己的唯一 ID。我很抱歉没有读懂你的想法,在我自己的时间里免费解决你的问题。
    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2022-07-02
    • 2019-02-11
    相关资源
    最近更新 更多