Как отобразить две части многомерного массива? - PullRequest
0 голосов
/ 14 мая 2019

Проблема, которую я получаю, заключается в том, что, когда я перебираю многомерный массив, как только я получаю навыки в многомерном массиве, он печатает: Andrew Wiley 30 Game Designer 72000 Array C++ Level Design Leadership

Он распечатывает и руководство по разработке уровней в массивах и C ++.

Как удалить вывод из массива и заменить его навыками «Лидерство при проектировании уровней C ++», не печатая оба?

$students = [
    Andrew => [
        fullName => Andrew Wiley,
        age => 30,
        jobTitle => Game Designer,
        Salary => 72000,
        skills => [C++, Level Design, Leadership]
    ]
];

foreach($students[Andrew] as $student) {
    echo $student . <br>;
    if($student == $students[Andrew][skills]) {
        foreach($students[Andrew][skills] as $skill) {
            echo $skill;
        }
    }
};

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Обновите ваш foreach следующим образом:

foreach($students['Andrew'] as $student) {
    echo $student . <br>;
      if($student === $students['Andrew']['skills'] 
        && is_array($students['Andrew']['skills'])
        && count($students['Andrew']['skills']) > 0) {
           echo implode(", ",$students['Andrew']['skills']);
        }
 }

Выход:

C ++, Дизайн уровней, Лидерство

Что это делает:

  • Если оператор проверяет, равно ли оно,
  • Затем проверяет, является ли это массив
  • Затем проверяет, что массив не пустой
  • Перед тем, как наконец объединит все элементы массива в строку и выведет эту строку с echo.

Также обратите внимание на кавычки вокруг ключей массива

0 голосов
/ 15 мая 2019

Вы можете использовать рекурсивную функцию.

function printVariables($array,$level=1){
    foreach($array as $value){
        if(is_array($value)){
            $level++;
            printVariables($value,$level);
        }else{
            echo $level <= 2 ? "$value\n" : "$value ";
        }
    }
}

printVariables($students);

Или сериализовать ее ...

foreach($students as $student){
     echo json_encode($student,JSON_PRETTY_PRINT);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...