Я вызываю API Proxmox, чтобы получить имена виртуальных машин в каждом узле. Эта часть кода работает хорошо (более полная часть моего кода в конце этого поста):
foreach ($arrays['data'] as $array) {
echo $array['name'];
}
echo: vm1vm2vm3.
Но я хотел бы увидеть этот результат, через запятую: vm1, vm2, vm3.
Я пытался:
foreach ($arrays['data'] as $array) {
echo implode(',', $array['name']);
}
Но ошибка: "Warning: implode(): Invalid arguments passed in"
Итак, я пытался с:
foreach ($arrays['data'] as $array) {
echo implode(',', (array)$array['name']);
}
Нет ошибки, но нет запятой. Тот же результат, что и простой "echo $ array ['name'];"
И наконец я попытался:
foreach ($arrays['data'] as $array) {
$vmNameWithComma[] = $array['name'];
echo implode(',', $vmNameWithComma);
}
, который возвращает: vm1vm1,vm2vm1,vm2,vm3.
Есть идеи?
foreach ($servers as $server) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://'.$onlinenode.'/api2/json/nodes/'.$server['node'].'/qemu');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Cookie: PVEAuthCookie=' . $cookie;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'La machine ' .$server['node']. ' est injoignable (erreur : ' . curl_error($ch) . ').<br>';
}
else {
$arrays = json_decode($result, true);
$vmcount = count((array) $arrays['data']);
if ($vmcount == 0) {
echo 'Server ' .$server['node']. ' doesn\'t host vm.<br>';
}
else if ($vmcount == 1) {
echo 'Server ' .$server['node']. ' host only one vm which is : ' .$arrays['data']['0']['name']. '<br>';
}
else {
echo 'Server ' .$server['node']. ' host' .$vmcount. ' vm which are : ';
foreach ($arrays['data'] as $array) {
$vmNameWithComma[] = $array['name'];
echo implode(',', $vmNameWithComma);
}
echo '.<br>';
}
}
curl_close($ch);
}