#php #arrays #for-loop #foreach #associative-array
Вопрос:
Я новичок в PHP и хотел бы знать, есть ли простой способ решить эту проблему.
$class_1 = array("Name" => "Lule", "Surname" => "Mirela", "Email" => "Lule@gmail.com", "Birthday" => "30/04/2001");
$class_2 = array("Name" => "Aida", "Surname" => "Besim", "Email" => "Aida@gmail.com", "Birthday" => "16/11/2001");
$class_3 = array("Name" => "Flaka", "Surname" => "Agim", "Email" => "Flaka@gmail.com", "Birthday" => "23/09/2003");
for($i = 1; $i <= 3; $i ) {
foreach ($class_1 as $key => $val) {
echo $key. ": ";
echo $val. "<br/>";
}
}
Технически я думал, что можно было бы просто написать $class_$i
, но это, похоже, не работает. Я не знаком с синтаксисом PHP.
Ответ №1:
Попробуйте использовать многомерные массивы. Что-то вроде этого.
$class[0] = array("Name" => "Lule", "Surname" => "Mirela", "Email" => "Lule@gmail.com", "Birthday" => "30/04/2001");
$class[1] = array("Name" => "Aida", "Surname" => "Besim", "Email" => "Aida@gmail.com", "Birthday" => "16/11/2001");
$class[2] = array("Name" => "Flaka", "Surname" => "Agim", "Email" => "Flaka@gmail.com", "Birthday" => "23/09/2003");
for($i = 0; $i <= 2; $i ) {
foreach ($class[$i] as $key => $val) {
echo $key. ": ";
echo $val. "<br/>";
}
}
Также к вашему сведению, иметь класс в качестве имени переменной — ужасная идея.
Ответ №2:
То, что вы ищете, называется «переменными переменными«. Вам нужно создать переменную, содержащую имя массива, и использовать ее с двойным знаком доллара:
$class_1 = array("Name" => "Lule", "Surname" => "Mirela", "Email" => "Lule@gmail.com", "Birthday" => "30/04/2001");
$class_2 = array("Name" => "Aida", "Surname" => "Besim", "Email" => "Aida@gmail.com", "Birthday" => "16/11/2001");
$class_3 = array("Name" => "Flaka", "Surname" => "Agim", "Email" => "Flaka@gmail.com", "Birthday" => "23/09/2003");
for($i = 1; $i <= 3; $i ) {
$array = "class_$i";
foreach ($array as $key => $val) {
echo $key. ": ";
echo $val. "<br/>";
}
}
Или более кратко:
$class_1 = array("Name" => "Lule", "Surname" => "Mirela", "Email" => "Lule@gmail.com", "Birthday" => "30/04/2001");
$class_2 = array("Name" => "Aida", "Surname" => "Besim", "Email" => "Aida@gmail.com", "Birthday" => "16/11/2001");
$class_3 = array("Name" => "Flaka", "Surname" => "Agim", "Email" => "Flaka@gmail.com", "Birthday" => "23/09/2003");
for($i = 1; $i <= 3; $i ) {
foreach (${"class_$i"} as $key => $val) {
echo $key. ": ";
echo $val. "<br/>";
}
}
Однако, на мой взгляд, создание массива, как предлагает @Akshay, в целом лучше.