Написание небольшой программы, чтобы узнать у некоторых людей их мечты для развлечения. Я пытаюсь поместить данные в ассоциативный массив. Я хочу, чтобы это получилось так (например, три имени:
How many people should I ask their dreams?
*number*
What is your name?
*name*
What is your dream?
*dream*
name's dream is: dream
Мой код выглядит следующим образом:
<?php
echo "How many people should I ask their dreams?" . PHP_EOL;
$many = readline();
$dreams = [];
if (is_numeric($many)) {
for ($i = 1; $i <= $many; $i++) {
echo "What is your name?" . PHP_EOL;
$dreams[] = readline() . PHP_EOL;
echo "What is your dream?" . PHP_EOL;
$dreams[] = readline() . PHP_EOL;
}
echo "In jouw bucketlist staat: " . PHP_EOL;
foreach ($dreams as $key => $value) {
echo $key . "'s dream is: " . $value;
}
} else {
exit($hoeveel . ' is geen getal, probeer het opnieuw');
}
?>
Он продолжает возвращать это:
0's dream is: *name*
1's dream is: *name*
etcetera.
и как мне это сделать?
Когда вы читаете значения из массива $dreams
с помощью foreach ($dreams as $key => $value)
, вы ожидаете, что имена будут ключами, но вы вставляли значения не так. Вместо этого вы можете использовать имя в качестве ключа массива следующим образом:
for ($i = 1; $i <= $many; $i++) {
echo "What is your name?" . PHP_EOL;
// set a name variable here
$name = readline() . PHP_EOL;
echo "What is your dream?" . PHP_EOL;
// then use that variable as the array key here
$dreams[$name] = readline() . PHP_EOL;
}
Вы не используете имя в качестве ключа массива при добавлении значений. Это просто другое значение.