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 ] ]; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |