PHP.SU

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

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

> Найдено сообщений: 4
aleksey7 Отправлено: 06 Июля, 2023 - 15:29:51 • Тема: Как собрать массив из строчных данных • Форум: Напишите за меня, пожалуйста

Ответов: 1
Просмотров: 2291
Здравствуйте помогите пожалуйста понять алгоритм сборки данных в массив. надо собрать дерево категорий из строчных даных, все строки с ':' это данные которые должны быть в соответствующей категории. Пример данных

CODE (text):
скопировать код в буфер обмена
  1. db1
  2. catA
  3. cat1a1
  4. prod1:a0
  5. prod2:a0
  6. prod3:a0
  7. cat2a2
  8. prod1:a1
  9. prod2:a1
  10. prod3:a1
  11. catB
  12. cat1b1
  13. prod1:b0
  14. prod2:b0
  15. prod3:b0
  16. cat2b2
  17. prod1:b1
  18. prod2:b1
  19. prod3:b1
  20. db2
  21. catC
  22. cat1c1
  23. prod1:c0
  24. prod2:c0
  25. prod3:c0
  26. cat2c1
  27. prod1:c1
  28. prod2:c1
  29. prod3:c1
  30. catD
  31. cat1d2
  32. prod1:d0
  33. prod2:d0
  34. prod3:d0
  35. cat2d2
  36. prod1:d1
  37. prod2:d1
  38. prod3:d1
  39.  


на выходе должен получится массив

PHP:
скопировать код в буфер обмена
  1.  
  2. [
  3. 'db1' =>
  4.   [
  5.     'catA' =>
  6.     [
  7.       'cat1a1' => ['prod1:a0', 'prod2:a0', 'prod3:a0'] ,
  8.       'cat2a2' => ['prod1:a1', 'prod2:a1', 'prod3:a1']
  9.     ],
  10.     'catB' =>
  11.     [
  12.       'cat1b1' => ['prod1:b0', 'prod2:b0', 'prod3:b0'],
  13.       'cat2b2' => ['prod1:b1', 'prod2:b1', 'prod3:b1']
  14.     ]
  15.   ],
  16. 'db2' =>
  17.    [
  18.      'catC' =>
  19.      [
  20.        'cat1c1' => ['prod1:c0', 'prod2:c0', 'prod3:c0'] ,
  21.        'cat2c2' => ['prod1:c1', 'prod2:c1', 'prod3:c1']
  22.      ],
  23.      'catD' =>
  24.      [
  25.        'cat1d1' => ['prod1:d0', 'prod2:d0', 'prod3:d0'],
  26.        'cat2d2' => ['prod1:d1', 'prod2:d1', 'prod3:d1']
  27.      ]
  28.    ]
  29. ];
aleksey7 Отправлено: 23 Января, 2018 - 21:57:49 • Тема: помогите отсортировать массив по клюку • Форум: Напишите за меня, пожалуйста

Ответов: 4
Просмотров: 82
Sail пишет:
aleksey7, вариант:
PHP:
скопировать код в буфер обмена
  1. uasort($list, function($a, $b) { return $a['v']['y'] > $b['v']['y'];});


v,f,.. не имеет значения эти ключи динамичны и их может быть больше двух, имеет значения только ключ 'у' который в свою очередь тоже динамичен может быть и string и init по которому нужно отсортировать
aleksey7 Отправлено: 23 Января, 2018 - 21:27:05 • Тема: помогите отсортировать массив по клюку • Форум: Напишите за меня, пожалуйста

Ответов: 4
Просмотров: 82
я вроде добился нужного результата но хотелось бы знать как это делается более профессионально

PHP:
скопировать код в буфер обмена
  1.  
  2. $list=array(
  3.   'a'=>array(
  4.     'v'=> array('x'=>1,'y'=>9,'z'=>3),
  5.     'f'=> array('x'=>1,'y'=>9,'z'=>3)
  6.   ),
  7.   'b'=>array(
  8.     'v'=> array('x'=>1,'y'=>12,'z'=>3),
  9.     'f'=> array('x'=>1,'y'=>12,'z'=>3),
  10.     't'=> array('x'=>1,'y'=>12,'z'=>3),
  11.   ),
  12.   'c'=>array(
  13.     'v'=> array('x'=>1,'y'=>9,'z'=>3),
  14.     'f'=> array('x'=>1,'y'=>9,'z'=>3),
  15.     'o'=> array('x'=>1,'y'=>9,'z'=>3),
  16.     'p'=> array('x'=>1,'y'=>9,'z'=>3),
  17.   ),
  18.   'd'=>array(
  19.     'v'=> array('x'=>1,'y'=>'abc','z'=>3),
  20.     'f'=> array('x'=>1,'y'=>'abc','z'=>3)
  21.   ),
  22.   'e'=>array(
  23.     'v'=> array('x'=>1,'y'=>12,'z'=>3),
  24.     'f'=> array('x'=>1,'y'=>12,'z'=>3)
  25.   ),
  26.   'f'=>array(
  27.     'r'=> array('x'=>1,'y'=>21,'z'=>3)
  28.   ),
  29.   'g'=>array(
  30.     'v'=> array('x'=>1,'y'=>'abc','z'=>3),
  31.     'f'=> array('x'=>1,'y'=>'abc','z'=>3)
  32.   ),
  33. );
  34. $tmp = array_map(function($x){
  35.   foreach($x as $k=>$v){
  36.     if (array_key_exists('y', $v)) {
  37.       return $v['y'];
  38.     }
  39.   }
  40.  }, $list);
  41. asort($tmp);
  42. $new=array();
  43. foreach($tmp as $k=>$v){
  44.   $new[ $k ] = $list[$k];
  45. }
  46.  
  47. print_r($new);
  48.  
  49.  
aleksey7 Отправлено: 23 Января, 2018 - 09:07:07 • Тема: помогите отсортировать массив по клюку • Форум: Напишите за меня, пожалуйста

Ответов: 4
Просмотров: 82
объясните пожалуйста как отсортировать массив по клюку 'y'

PHP:
скопировать код в буфер обмена
  1. $list=array(
  2.   'a'=>array(
  3.     'v'=> array('x'=>1,'y'=>9,'z'=>3),
  4.     'f'=> array('x'=>1,'y'=>9,'z'=>3)
  5.   ),
  6.   'b'=>array(
  7.     'v'=> array('x'=>1,'y'=>12,'z'=>3),
  8.     'f'=> array('x'=>1,'y'=>12,'z'=>3),
  9.     't'=> array('x'=>1,'y'=>12,'z'=>3),
  10.   ),
  11.   'c'=>array(
  12.     'v'=> array('x'=>1,'y'=>9,'z'=>3),
  13.     'f'=> array('x'=>1,'y'=>9,'z'=>3),
  14.     'o'=> array('x'=>1,'y'=>9,'z'=>3),
  15.     'p'=> array('x'=>1,'y'=>9,'z'=>3),
  16.   ),
  17.   'd'=>array(
  18.     'v'=> array('x'=>1,'y'=>'abc','z'=>3),
  19.     'f'=> array('x'=>1,'y'=>'abc','z'=>3)
  20.   ),
  21.   'e'=>array(
  22.     'v'=> array('x'=>1,'y'=>12,'z'=>3),
  23.     'f'=> array('x'=>1,'y'=>12,'z'=>3)
  24.   ),
  25.   'f'=>array(
  26.     'r'=> array('x'=>1,'y'=>21,'z'=>3)
  27.   ),
  28.   'g'=>array(
  29.     'v'=> array('x'=>1,'y'=>'abc','z'=>3),
  30.     'f'=> array('x'=>1,'y'=>'abc','z'=>3)
  31.   ),
  32. );

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB