Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP Двумерный массив в трехмерный / 15 сообщений из 15, страница 1 из 1
29.06.2016, 14:09
    #39264684
Маша и
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
есть массив
Код: php
1.
2.
3.
$a[] = ('name'=>'Вася', 'age'=>18);
$a[] = ('name'=>'Петя', 'age'=>17);
$a[] = ('name'=>'Вася', 'age'=>13);


как сделать чтобы вывело так?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Array
(
    [Петя] => Array
                (
                    [name] => Петя
                    [age] =>17
                )

    [Вася] => Array
        (
            [0] => Array
                (
                    [name] => Вася
                    [Вася] => 18
                )
           [1] => Array
                (
                    [name] => Вася
                    [Вася] => 13
                )

 )
...
Рейтинг: 0 / 0
29.06.2016, 14:18
    #39264692
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?php
$a[] = ['name' => 'Вася', 'age' => 18];
$a[] = ['name' => 'Петя', 'age' => 17];
$a[] = ['name' => 'Вася', 'age' => 13];

foreach($a as $e) $b[$e['name']][] = $e;

var_dump($b);
...
Рейтинг: 0 / 0
29.06.2016, 14:23
    #39264695
Маша и
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
vkle, галяк :(
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Array
(
    [Вася] => Array
        (
            [0] => Array
                (
                    [name] => Вася
                    [age] => 18
                )

            [1] => Array
                (
                    [name] => Вася
                    [age] => 13
                )

        )

    [Петя] => Array
        (
            [0] => Array <----- галяк
                (
                    [name] => Петя
                    [age] => 17
                )

        )

)
...
Рейтинг: 0 / 0
29.06.2016, 14:27
    #39264701
Маша и
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
vkle
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?php
$a[] = ['name' => 'Вася', 'age' => 18];
$a[] = ['name' => 'Петя', 'age' => 17];
$a[] = ['name' => 'Вася', 'age' => 13];

foreach($a as $e) $b[$e['name']][] = $e;

var_dump($b);



не получится, если не повторяется не нужно создавать трехмерный, трехмерный только из повторяющихся
...
Рейтинг: 0 / 0
29.06.2016, 14:28
    #39264702
Маша и
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
Маша иvkle
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?php
$a[] = ['name' => 'Вася', 'age' => 18];
$a[] = ['name' => 'Петя', 'age' => 17];
$a[] = ['name' => 'Вася', 'age' => 13];

foreach($a as $e) $b[$e['name']][] = $e;

var_dump($b);



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

* ненужно :)
...
Рейтинг: 0 / 0
29.06.2016, 14:31
    #39264705
Маша и
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
vkle
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
<?php
$a[] = ['name' => 'Вася', 'age' => 18];
$a[] = ['name' => 'Петя', 'age' => 17];
$a[] = ['name' => 'Вася', 'age' => 13];

foreach($a as $e) $b[$e['name']][] = $e;

var_dump($b);




теоретически нужно узнать повторяется ли значение и если повторяется пихаем в трехмерный, а если не повторяется в двухмерный
...
Рейтинг: 0 / 0
29.06.2016, 15:21
    #39264765
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
Код: php
1.
2.
foreach($a as $e) $b[$e['name']][] = $e;
foreach($b as &$e) if(count($e) == 1) $e = $e[0];
...
Рейтинг: 0 / 0
29.06.2016, 15:35
    #39264778
Маша и
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
vkle
Код: php
1.
2.
foreach($a as $e) $b[$e['name']][] = $e;
foreach($b as &$e) if(count($e) == 1) $e = $e[0];



Круто, спасибо!
...
Рейтинг: 0 / 0
29.06.2016, 15:39
    #39264784
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
Маша иКрутоСкукотища.
...
Рейтинг: 0 / 0
29.06.2016, 16:47
    #39264860
Маша и
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
vkleМаша иКрутоСкукотища.
Круто - круто! И вижу что оно работает и понимаю что оно работает, а как оно работает не понимаю, прикол в ссылке штоль?
...
Рейтинг: 0 / 0
29.06.2016, 16:52
    #39264864
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
Маша и И вижу что оно работает и понимаю что оно работает, а как оно работает не понимаю

O! Надо запомнить...
...
Рейтинг: 0 / 0
29.06.2016, 16:52
    #39264865
Маша и
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
Выходит, по ссылке данные не меняются и мы ещё раз проходим по циклу с теми же данными что и в первом цикле и если поле одно, то перезаписываем в двумерный массив?
...
Рейтинг: 0 / 0
29.06.2016, 17:00
    #39264871
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
Маша и,

Строго говоря, в PHP нет дву-, трёх- и более мерных массивов. Все массивы в PHP являются одномерными. Однако, элемент массива может быть массивом. Отсюда и получается некая пародия на двумерность. Используйте понятие "элемент массива" - и тогда, надеюсь, сразу станет ясно, как оно работает.
...
Рейтинг: 0 / 0
29.06.2016, 17:16
    #39264891
Маша и
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
vkle,
Ок, спасибо! То есть получается в данном примере мы проходим по
массиву $b и ищем в нем совпадающие элементы(массивы), которые переданы по ссылке foreach($b as &$e)
и считаем количество совпадений
if(count($e) == 1) $e = $e[0];
...
Рейтинг: 0 / 0
29.06.2016, 18:18
    #39264951
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP Двумерный массив в трехмерный
Маша и,

Нет, не совсем так. Ничего не считаем.

Перебираем элементы массива $b. Если элемент $e состоит из массива (созданного ранее) длиной 1 (уникальный Петя), то присваиваем этому $e значение первого его элемента (с нулевым индексом).

Ну а передача по ссылке тут использована для того, чтобы внести изменения непосредственно в $b и не плодить третий массив и не обращаться повторно к элементам $b по индексу. В принципе, можно обойтись без ссылки, только код будет чуток сложнее.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP Двумерный массив в трехмерный / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]