powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP Двумерный массив в трехмерный
15 сообщений из 15, страница 1 из 1
PHP Двумерный массив в трехмерный
    #39264684
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть массив
Код: 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
PHP Двумерный массив в трехмерный
    #39264692
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
PHP Двумерный массив в трехмерный
    #39264695
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
PHP Двумерный массив в трехмерный
    #39264701
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
PHP Двумерный массив в трехмерный
    #39264702
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Маша и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
PHP Двумерный массив в трехмерный
    #39264705
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
PHP Двумерный массив в трехмерный
    #39264765
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
PHP Двумерный массив в трехмерный
    #39264778
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
PHP Двумерный массив в трехмерный
    #39264784
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маша иКрутоСкукотища.
...
Рейтинг: 0 / 0
PHP Двумерный массив в трехмерный
    #39264860
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleМаша иКрутоСкукотища.
Круто - круто! И вижу что оно работает и понимаю что оно работает, а как оно работает не понимаю, прикол в ссылке штоль?
...
Рейтинг: 0 / 0
PHP Двумерный массив в трехмерный
    #39264864
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маша и И вижу что оно работает и понимаю что оно работает, а как оно работает не понимаю

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

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

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

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

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


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