Как создать разделенный запятыми список из цикла while? - PullRequest
0 голосов
/ 10 ноября 2019
$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

isожидается: Персоны со статусом 0: Герман, Суси, Мара

Ответы [ 3 ]

3 голосов
/ 10 ноября 2019

Немного другое решение для вас.

$statusZeroPersonae = [];

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

echo 'Personae with status 0: ' . implode(", ", $statusZeroPersonae);
0 голосов
/ 10 ноября 2019

Вы можете хранить их в массиве и использовать join или implode

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

Рабочий пример: - https://3v4l.org/qjgPC

0 голосов
/ 10 ноября 2019

Функция 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);

Вывод, очевидно, таков:

Персоны со статусом 0: Герман, Суси, Мара

...