Как я могу получить доступ к значению родительского ключа в многомерном массиве в PHP?

1

У меня есть следующий массив:

Array
(
    [copier-clb009] => Array
        (
            [status] => Printing
            [ping] => PING OK - Packet loss = 0%, RTA = 0.47 ms
            [model] => "Xerox WorkCentre 4265"
        )

    [copier-cor000] => Array
        (
            [status] => Printing
            [ping] => PING OK - Packet loss = 0%, RTA = 0.53 ms
            [model] => "Xerox WorkCentre 4265"
        )

    [printer-001] => Array
        (
            [status] => Idle
            [ping] => PING OK - Packet loss = 0%, RTA = 0.55 ms
            [model] => "Xerox Phaser 4600"
        )

    [printer-002-s1] => Array
        (
            [status] => Idle
            [ping] => PING OK - Packet loss = 0%, RTA = 0.86 ms
            [model] => "Xerox WorkCentre 5955 v1 Multifunction System"
        )

)

Например, я попытался:

echo $printers[0];

а также

echo array_values($printers)[0];

ожидая, что результаты будут "copier-clb009", но ни одна из них не работает. Что я делаю неправильно?

Благодарю!

  • 1
    Ваша ошибка здесь совершенно ясна: array_ values ($ printers) [0] ; Вы хотите отобразить ключ, а не значение . Итак, вам нужно получить ключи и взять первый, например, echo array_ keys ($ printers) [0];
  • 0
    вам нужно распечатать все значения ключа или конкретного отдельного ключа
Показать ещё 2 комментария
Теги:
arrays
multidimensional-array

2 ответа

1
Лучший ответ

Непонятно, почему вы хотите это сделать, но PHP уже предлагает вам очень удобную конструкцию для итерации по проходящим объектам, например массивам, называемым foreach

foreach($printers as $key => $value) {
    echo "$key => \n";
    foreach($value as $k => $v) {
        echo "$k: $v\n";
    }
    echo "\n";
}

Конструкция foreach дает вам как доступ к ключу, так и значение каждого элемента, который вы выполняете с каждой итерацией. Таким образом, на самом деле нет необходимости делать какие-либо куриные array_values с помощью array_values или array_keys.

  • 0
    Отлично! Это то, с чего я начал, но я запутался во вложенном foreach, используя ($ value as ...), чего мне не хватало, а также пытаясь получить доступ к $ value в первом foreach вместо ключа. Я пытался получить к ним доступ в качестве меры по устранению неполадок. Теперь все кажется очевидным :) Спасибо!
1

Я думаю, вам нужно идти с циклом foreach, это сработает для вас.

foreach($printers as $key => $value){
    echo $key.'<br />';
}

это напечатает весь ваш ключ, если вам нужно использовать определенное значение ключа, которое вы можете установить в переменной согласно вашему требованию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню