如何从 while 循环创建逗号分隔列表?

How to create comma separated list from a while-loop?

$personas = [
'Hermann' => [
  'status' => '0',
  'gender' => 'maskulin'
],
'Lida' => [
  'status' => '1',
  'gender' => 'feminin'
],
'Susi' => [
  'status' => '0',
  'gender' => 'feminin'
],
'Mara' => [
  'status' => '0',
  'gender' => 'feminin'
]
];

角色状态为 0

  echo 'Personas with status 0: ';
  while ($status = current($personas)) {
    if ($status['status'] == '0') {
    $status_list = key($personas);
    echo $status_list;

  }
  next($personas);
}

结果是: 状态为 0 的角色:HermannSusiMara

预计: 状态为 0 的角色:Hermann、Susi、Mara

给你的解决方案有点不同。

$statusZeroPersonae = [];

foreach($personas as $personaName => $persona) {
    if ($persona['status'] === '0') {
        $statusZeroPersonae[] = $personaName;
    }
}

echo 'Personae with status 0: ' . implode(", ", $statusZeroPersonae);

implode() 函数对于此类事情非常方便...

我还冒昧地清理了一下你的代码:

<?php
$personas = [
  'Hermann' => [
    'status' => '0',
    'gender' => 'maskulin'
  ],
  'Lida' => [
    'status' => '1',
    'gender' => 'feminin'
  ],
  'Susi' => [
    'status' => '0',
    'gender' => 'feminin'
  ],
  'Mara' => [
    'status' => '0',
    'gender' => 'feminin'
  ]
];

echo 'Personas with status 0: ';
while ($status = current($personas)) {
  if ($status['status'] == '0') {
    $personaName = key($personas);
    $personasWithStatus0[] = $personaName;
  }
  next($personas);
}
echo implode(", ", $personasWithStatus0);

输出显然是:

Personas with status 0: Hermann, Susi, Mara

您可以将它们保存在数组中并使用 joinimplode

while ($status = current($personas)) {
  if ($status['status'] == '0') {
   $result[] = key($personas);
 }
 next($personas);
}
echo 'Personas with status 0: '.join(', ',$result);

工作示例:- https://3v4l.org/qjgPC