加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP:未定义的偏移量:0,但不是dd()

发布时间:2020-12-13 22:28:26 所属栏目:PHP教程 来源:网络整理
导读:我得到一个未定义的偏移量:0错误与laravel.奇怪的是,当我dd()它,它出现了. $ports = $container-getPorts(); $ports = $ports[0]; 这将返回Undefined offset:0 当我dd() $ports = $container-getPorts();dd($ports[0]);Port {#336 #privatePort: 80 #publi
我得到一个未定义的偏移量:0错误与laravel.奇怪的是,当我dd()它,它出现了.

$ports = $container->getPorts();
  $ports = $ports[0];

这将返回Undefined offset:0

当我dd()

$ports = $container->getPorts();
dd($ports[0]);

Port {#336 
  #privatePort: 80
  #publicPort: 32780
  #type: "tcp"
}

完整的数组:

array:1 [▼
  0 => Port {#336 ▼
    #privatePort: 80
    #publicPort: 32780
    #type: "tcp"
  }
]

我用docker-php sdk得到了这个错误.谁知道发生了什么?

完整代码:

public function dockerContainers()
{
    $docker = new DockerDocker();
    $containerManager = $docker->getContainerManager();
    $containers = $containerManager->findAll();

    $data = [];
    $x=0;
    foreach ($containers as $container) {
        $ports = $container->getPorts();
        // dd($ports[0]);
        $ports = $ports[0];
        $privatePort = $ports->getPrivatePort();
        $publicPort = $ports->getPublicPort();
        $data[$x++] = [
            'id'    => $container->getId(),'state'  => $container->getState(),'names'  => $container->getNames(),'image'  => $container->getImage(),'status' => $container->getStatus(),'ports'  => [
                'privatePort' => $privatePort,'publicPort'  => $publicPort
            ]
        ];
    }

    return view('containers',[ 'containers' => $data ]);
}

解决方法

这是因为你的一个容器没有端口,最好使用laravel collect()方法,它使你的数组??成为集合对象,然后你可以使用可用的集合方法.
请尝试以下代码……

foreach ($containers as $container) {
            //getting ports and making laravel collection object
        $ports = collect($container->getPorts());
       if($ports->first()){
        $ports = $ports->first();
        $privatePort = $ports->getPrivatePort();
        $publicPort = $ports->getPublicPort();
        $data[$x++] = [
            'id'    => $container->getId(),'publicPort'  => $publicPort
            ]
        ];
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读