Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308

Вывести элементы массива

05.02.2024, 17:45. Показов 915. Ответов 5

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.

Имеется массив вот такого вида:
Кликните здесь для просмотра всего текста
JSON
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
30
31
32
33
34
35
36
37
38
39
40
41
42
Array
(
    [count] => 1
    [0] => Array
    (
            [objectclass] => Array
                (
                    [count] => 4
                    [0] => first
                    [1] => second
                    [2] => date
                    [3] => user
                )
            [0] => objectclass
            
            [whencreated] => Array
                (
                    [count] => 1
                    [0] => 20221230015655.0Z
                )
            [1] => whencreated
            
            [displayname] => Array
                (
                    [count] => 1
                    [0] => Фамилия Имя Отчество
                )
            [2] => displayname
            
            [memberof] => Array
                (
                    [count] => 4
                    [0] => CN=Member1,OU=Groups,DC=Domain,DC=com
                    [1] => CN=Member2,OU=Groups,DC=Domain,DC=com
                    [2] => CN=Member3,OU=Groups,DC=Domain,DC=com
                    [3] => CN=Member4,OU=Groups,DC=Domain,DC=com
                    [4] => CN=Member5,OU=Groups,DC=Domain,DC=com
                )
            [3] => memberof
        )
 
)

Получаю я его вот таким запросом:
PHP
1
$array = ldap_get_entries($adconn, $result);
Вопрос:
• Как мне вывести конкретный элемент массива, например displayname?
• Как быть, если в этом элементе, их несколько и нужно вывести все? Например memberof.
• Как вывести все элементы массива списком, включая групповые?

Я пробовал варианты:
PHP
1
2
3
echo "<pre>";
print_r($array);
echo "</pre>";
PHP
1
var_dump($array);
Но это не совсем то, что нужно.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.02.2024, 17:45
Ответы с готовыми решениями:

Элементы массива задаются с помощью датчика случайных чисел. Вывести элементы массива на экран в обратном порядке.
решите пожалуйста Дан одномерный массив a1,...,an, состоящий из 17 целых чисел. Элементы массива задаются с помощью датчика случайных...

Вывести элементы массива на промежутке [ a,b ], вычислить количество элементов массива, заменить все положительные элементы
В одномерном массиве, состоящем из n вещественных элементов, – вывести на печать элементы массива, значения которых не принадлежат...

Элементы массива, стоящие на чётных местах заменить нулями и вывести элементы получившегося массива на экран
Создать одномерный числовой массив из n элементов. Затем, элементы, стоящие на чётных местах заменить нулями и вывести элементы...

5
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308
06.02.2024, 05:18  [ТС]
Разобрался сам.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    //Вывести значения конкретного параметра (например, displayname)
    echo $info[0]["displayname"][0];
    
    //Вывести значения параметра с множеством значений (например, memberof)
    for ($i=0; $i<$info[0]["memberof"]["count"]; $i++)
    {
        echo $info[0]["memberof"][$i] . "<br>";
    }
    echo "<hr>";
    
    //Вывести все элементы массива, включая вложения (до 2-го уровня глубины)
    for ($i=0; $i<$info[0]["count"]; $i++)
    {
        $x = $info[0][$info[0][$i]]["count"];
        for ($y=0; $y<$x; $y++)
        {
            echo $info[0][$i] . " = " . $info[0][$info[0][$i]][$y] ."<br>";
        }
    }
Теперь меня интересует, как упростить использование такого массива?

Можно ли с помощью какого-нибудь json_decode получать значения массива командой вроде:
PHP
1
echo $myarray->displayname;
0
24 / 19 / 6
Регистрация: 11.02.2022
Сообщений: 45
06.02.2024, 11:00
Лучший ответ Сообщение было отмечено Рафик как решение

Решение

Рафик, Вы к массиву пытаетесь обратиться как к объекту, следовательно конвертируйте массив в объект.
Так же можно посмотреть где этот массив формируется и там же добавить тип возвращаемых данных - объект.
1
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308
06.02.2024, 11:27  [ТС]
walerus, а как ещё можно обратиться к массиву?
И где я могу посмотреть, как формируется этот массив? У меня в коде? Я же выше написал запрос, которым он формируется.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
06.02.2024, 18:10
Лучший ответ Сообщение было отмечено Рафик как решение

Решение

Вы можете его запарсить в какую нить обертку, где будет метод получения значения по ключу
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
class LdapResult {
    public function __construct(array $rawResult){ ... }
 
    public function findByKey(string $key) { ... }
}
 
 
 
$result = new LdapResult(
    ldap_get_entries($adconn, $result)
);
 
echo $result->findByKey("displayname");
1
2 / 2 / 1
Регистрация: 25.06.2013
Сообщений: 308
28.03.2024, 06:47  [ТС]
crautcher, walerus,
В продолжении темы...
Сейчас у меня появились массивы немного другого формата.

Результат команды var_dump($array); выглядит вот так:
Кликните здесь для просмотра всего текста
Code
1
string(442) "[{"Drives":[{"total":"577.55 GiB","used":"57.78 GiB (10.0%)","Local Storage":""},{"ID":"/dev/sda","model":"Burst Elite 120GB","vendor":"Patriot","size":"111.79 GiB"},{"ID":"/dev/sdb","model":"ST500DM002-1BD142","vendor":"Seagate","size":"465.76 GiB"},{"Optical":"/dev/sr0","model":"DVD-RAM GHA3N","vendor":"hp","dev-links":"cdrom"},{"rw":"cd-r,cd-rw,dvd-r,dvd-ram","speed":"40","dvd":"yes","Features":"","audio":"yes","multisession":"yes"}]}]
"

Результат команды var_dump(json_decode($array)); выглядит вот так:
Кликните здесь для просмотра всего текста
Code
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
array(1) {
  [0]=>
  object(stdClass)#4 (1) {
    ["Drives"]=>
    array(5) {
      [0]=>
      object(stdClass)#12 (3) {
        ["total"]=>
        string(10) "577.55 GiB"
        ["used"]=>
        string(17) "57.78 GiB (10.0%)"
        ["Local Storage"]=>
        string(0) ""
      }
      [1]=>
      object(stdClass)#13 (4) {
        ["ID"]=>
        string(8) "/dev/sda"
        ["model"]=>
        string(17) "Burst Elite 120GB"
        ["vendor"]=>
        string(7) "Patriot"
        ["size"]=>
        string(10) "111.79 GiB"
      }
      [2]=>
      object(stdClass)#11 (4) {
        ["ID"]=>
        string(8) "/dev/sdb"
        ["model"]=>
        string(17) "ST500DM002-1BD142"
        ["vendor"]=>
        string(7) "Seagate"
        ["size"]=>
        string(10) "465.76 GiB"
      }
      [3]=>
      object(stdClass)#7 (4) {
        ["Optical"]=>
        string(8) "/dev/sr0"
        ["model"]=>
        string(13) "DVD-RAM GHA3N"
        ["vendor"]=>
        string(2) "hp"
        ["dev-links"]=>
        string(5) "cdrom"
      }
      [4]=>
      object(stdClass)#5 (6) {
        ["rw"]=>
        string(24) "cd-r,cd-rw,dvd-r,dvd-ram"
        ["speed"]=>
        string(2) "40"
        ["dvd"]=>
        string(3) "yes"
        ["Features"]=>
        string(0) ""
        ["audio"]=>
        string(3) "yes"
        ["multisession"]=>
        string(3) "yes"
      }
    }
  }
}


Как мне из этого массива выловить, допустим, значение total?
$array["Drives"]["total"] и всевозможные другие варианты не работают. Я уже битый час мучаюсь.

Добавлено через 1 час 46 минут
Разобрался...
PHP
1
2
$array = json_decode(($array),true);
echo $array[0]['Drives'][0]['total'];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2024, 06:47
Помогаю со студенческими работами здесь

. Элементы массива вводиятся с клавиатуры. Всего 10 элементов. Вывести элементы этого массива, возведенные в квадрат
int main() { int arr; for(int i=0; i&lt;10; i++) { cin&gt;&gt;arr&gt;&gt;endl; } for(int i=0; i&lt;10; i++) { ...

Вывести все элементы массива в виде матрицы и вывести номер строки массива, в которой каждый элемент равен X.
Дан двумерный массив N=9, M=10; Вывести все элементы массива в виде матрицы и вывести номер строки массива, в которой каждый элемент равен...

Создать массив, содержащий 7 случайных чисел в диапазоне от 0 до 30. Вывести все элементы массива. Вывести все элементы
3. Создать массив, содержащий 7 случайных чисел в диапазоне от 0 до 30. Вывести все элементы массива. Вывести все элементы массива в...

Сформировать и вывести на экран новый массив, который будет содержать вначале все элементы массива A(0), затем все элементы массива B(4)
Здравствуйте! Помогите написать парочку программ... 3. Даны массивы A(0) и B(4). Сформировать и вывести на экран новый массив,...

Дан двухмерный массив. Вывести на экран: а) все элементы второго столбца массива; 6) все элементы пятой строки массива начиная с последнего элемента э
Дан двухмерный массив. Вывести на экран: а) все элементы второго столбца массива; 6) все элементы пятой строки массива начиная с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru