gpt4 book ai didi

PHP: undefined offset :0,但不是 dd()

转载 作者:可可西里 更新时间:2023-10-31 23:45:04 25 4
gpt4 key购买 nike

我在使用 laravel 时遇到了 Undefined offset: 0 错误。奇怪的是,当我 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 \Docker\Docker();
$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(),
'state' => $container->getState(),
'names' => $container->getNames(),
'image' => $container->getImage(),
'status' => $container->getStatus(),
'ports' => [
'privatePort' => $privatePort,
'publicPort' => $publicPort
]
];
}
}

关于PHP: undefined offset :0,但不是 dd(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46676773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com