Печать массивов с разными именами с использованием for и foreach в PHP

#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, в целом лучше.