PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 10
Кровавый Помидор Отправлено: 25 Октября, 2018 - 17:51:40 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
Да, спасибо, выглядит вроде как в том ключе в котором надо но еще деталь осталась
это все необходимо чтобы выполнялось непосредственно в консоли, поэтому хтмл туда не вписывается)
Кровавый Помидор Отправлено: 25 Октября, 2018 - 16:05:56 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
Господи, прошу прощения, вот это я накосячил с вводными данными
я их просто для быстрой руки накидал так как они значения в принципе не имеют, там могут быть любые заглавия для таблиц и любые значения(т.е. они должны формироваться автоматически в зависимости от того, что прилетит в массиве, тот или иной набор данных с теми или совсем другими обозначениями, и это не должно влиять на код никак), поэтому сильного внимания не придавал этому, а теперь понял что мог этим и запутать...подправил данные, вот так правильно будет

PHP:
скопировать код в буфер обмена
  1. $data = array(
  2.     'role' => 'ceo',
  3.     'name'=> "benjamin button",
  4.         array('role'=>'cto', 'name'=>'steve wonder',
  5.         array('role'=>'head of finance dep.', 'name' =>'donald duck'),
  6.     array('role'=>'team lead', 'name' => 'rude mustach'),
  7.         array('role' => 'second team lead', 'name' => 'senior pomidor'),
  8.        array('role'=>'senior dev', 'name' => 'jar-jar bings', 'tech spec' => '.net', 'salary' => '5 majorlion dollars'),
  9.        array('role' => 'senior dev', 'name' => 'obi-wan kenoby', 'tech spec' => 'java', 'salary'=>'10% of all revenues',
  10.            array('role' =>'junior dev', 'name' => 'little any skywalking', 'teachedby' => 'obi-wan kenoby')),
  11.  
  12. array('role' => 'owner', 'name'=> 'mister beans'),));
Кровавый Помидор Отправлено: 25 Октября, 2018 - 15:58:12 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
такой вариант получается немножечко отличным от такого, какой нужно получить)
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. =========================================================================
  3.  
  4. |    name       |       role     | salary | trainedby |  tech spec |      
  5.  
  6. --------------------------------------------------------------------------
  7.  
  8. |mister beans   |    owner       |        |           |             |
  9.  
  10. |benjamin button|      ceo       |        |           |             |
  11.  
  12. |steve wonder   |    cto         |        |           |             |
  13.  
  14. |donald duck    |head of fin dep |        |           |             |
  15.  
  16. |rude mustach   |team lead       |        |           |             |
  17.  
  18. =========================================================================
  19.  
  20.  


Спасибо огромное! самая непонятная часть таки пройдена)
Кровавый Помидор Отправлено: 25 Октября, 2018 - 14:49:34 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
то есть я имею ввиду что сначала делаю отдельный массив
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr1 = array('name', 'role', 'salary','name','name','salary',...)
  3.  

потом в нем убираю дубликаты
после этого каждый отдельно разобранный массив вгоняю в многомерный массив
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr2 = array('name'=>'donald duck', 'role'=>'head of finance department')
  3.  

и проверяю второй массив по списку из первого массива, и если такого ключа нет, то добавляю в массив отсутствующий ключ с пустым значением, после чего второй массив уходит в третий, многомерный правильный массив который легко выводить по порядку для таблицы

и после всего этого сортирую по ключи массива в алфавитном порядке

я немного накосячил с примером данных, спешил с описанием) должно быть чуть подробнее, не 'ceo'=>'benjamin button' а array('role'=>'ceo', 'name'=>benjamin button') и тд
Кровавый Помидор Отправлено: 25 Октября, 2018 - 14:34:19 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
Получается, теперь нужно по шагам сделать следующее:
выбрать все ключи в отдельный массив и удалить дубликаты, чтобы вывести заглавия из первой строки
потом каждый из массивов приводить к одному виду(добавить недостатующие key с пустыми value) и набить этим всем уже один многомерный массив, который в конце концов и вывести чтобы получилась ровно та таблица, которую мне нужно получить
в правильном направлении думаю?
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $data = array(
  4.     'ceo' => "benjamin button",
  5.   array('cto' =>'steve wonder', 'head of finance dep.' =>'donald duck'),
  6.     array('team lead' => 'rude mustach', 'second team lead' => 'senior pomidor',
  7.        array('senior dev' => 'jar-jar bings', 'tech spec' => '.net', 'salary' => '5 majorlion dollars'),
  8.        array('senior dev' => 'obi-wan kenoby', 'tech spec' => 'java', 'salary'=>'10% of all revenues', array('junior dev' => 'little any skywalking', 'teachedby' => 'obi-wan kenoby')),
  9.  
  10. 'owner' => 'mister beans'),);
  11.  
  12.  
  13.  
  14.  
  15. function checkarr ($arr)
  16. {
  17.     echo "=======================================================";
  18.     foreach ($arr as $key => $item) {
  19.      //   var_dump($item);
  20.         if (is_array($item)) {
  21.       //     echo "это массив!<br>";
  22.  
  23.             checkarr($item);
  24.  
  25.         } else {
  26.             echo "<br>";
  27.  
  28.  
  29.                 echo "$key =>  $item <br>";
  30.  
  31.         }
  32.     }
  33.     echo "=======================================================";
  34. }
  35.  
  36. checkarr($data);
  37.  
  38.  
  39.  
Кровавый Помидор Отправлено: 25 Октября, 2018 - 14:30:38 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
оу, тогда так)
Кровавый Помидор Отправлено: 25 Октября, 2018 - 14:00:32 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
Спасибо огромное!
получается теперь что-то такое
http://prntscr[dot]com/laamx1

теперь буду думать как это привести в вид, который выше показал)
Кровавый Помидор Отправлено: 25 Октября, 2018 - 13:10:34 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
Строитель пишет:
Кровавый Помидор пишет:
Как проверить наличие массива
Функцией is_array().
о, спасибо!
не увидел такой функции в списке функций для работы с массивами
(Добавление)
и еще такой вопрос
я теряю ключи при переборе
как исправить этот код чтобы ключи не терялись?
PHP:
скопировать код в буфер обмена
  1.  
  2. function checkarr ($arr)
  3. {
  4.     foreach ($arr as $item) {
  5.  
  6.         if (is_array($item)) {
  7.             echo "это массив!<br>";
  8.             checkarr($item);
  9.  
  10.         } else {
  11. echo "<br>";
  12. echo key($arr) . "=>" . $item;
  13.      
  14.         }
  15.     }
  16. }
  17.  
  18. checkarr($data);
  19.  
Кровавый Помидор Отправлено: 25 Октября, 2018 - 12:08:45 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
Спасибо, немножечко не тот результат который нужен(
Как проверить наличие массива вложенного в другой массив?
то есть
PHP:
скопировать код в буфер обмена
  1.  
  2.    ke1=>value1,
  3.       array(key2=>value2, key3=>value3),
  4.       array(key4=>value4, key5=>value5,
  5.             array(key6=>value6,)),
  6.    key7=>value7);
  7.  

Единственный вариант, как я понимаю это рекурсия, и должно быть, как я понимаю, что-то такое
PHP:
скопировать код в буфер обмена
  1.  
  2. function checkarr ($arr) {
  3.     foreach ($arr as $item) {
  4.         if ($item contains anoter arr) {
  5.             checkarr($item);
  6.         } else {
  7.            
  8. //do something else
  9. }
  10.  

и вот я дупля не отбиваю что нужно написать вместо if ($item contains anoter arr)


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. =========================================================================
  3.  
  4. |    name       |       role     | salary | trainedby |  tech spec |      
  5.  
  6. --------------------------------------------------------------------------
  7.  
  8. |mister beans   |    owner       |        |           |             |
  9.  
  10. |benjamin button|      ceo       |        |           |             |
  11.  
  12. |steve wonder   |    cto         |        |           |             |
  13.  
  14. |donald duck    |head of fin dep |        |           |             |
  15.  
  16. |rude mustach   |team lead       |        |           |             |
  17.  
  18. =========================================================================
  19.  
  20.  


вот что-то на подобии такого я пытаюсь получить в результате
Кровавый Помидор Отправлено: 25 Октября, 2018 - 09:56:30 • Тема: Вложенные массивы • Форум: Вопросы новичков

Ответов: 20
Просмотров: 696
Всем привет!
У меня такой вот вопрос, есть массив и неизвестное количество вложенных массивов, например
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array(
  3. 'ceo' => "benjamin button',
  4.   array('cto' =>'steve wonder', 'head of finance dep.' =>'donald duck'),
  5.     array('team lead' => 'rude mustach', 'second team lead' => 'senior pomidor',
  6.        array('senior dev' => 'jar-jar bings', 'tech spec' => '.net', 'salary' => '5 majorlion dollars'),
  7.        array('senior dev' => 'obi-wan kenoby', tech spec' => 'java', 'salary'=>'10% of all revenues', array('junior dev' => 'little any skywalking', 'teachedby' => 'obi-wan kenoby')),
  8.  
  9. 'owner' => 'mister beans'
  10.  
  11.  

как вот это все вывести в ASCII таблицу при этом имея в качестве входных данных любой массив с любой величиной вложенности массивов и не получить ошибок?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB