Bonjour à tous,

J'ai un méga array ci-dessous que j'ai volontairement raccourci
En PHP, j'aimerai récupérer la valeur du (body) -> (files) -> (0) -> (link) => 'https://player.vimeo.com/external/...'

Quelle est la bonne méthode pour récupérer cette valeur seulement ?

Cet array à quatre niveaux du coup je suis un peu perdu, j'ai l'impression qu'il faut faire un foreach d'un foreach d'un autre foreach... et j'ai pas tout compris Smiley sweatdrop

Merci d'avance pour votre aide !


Array
(
  [body] => Array
        (
// (...)
           [last_user_action_event_date] => 2020-07-12T13:12:50+00:00
           [files] => Array
                (
                    [0] => Array
                        (
                            [quality] => hd
                            [type] => video/mp4
                            [width] => 1920
                            [height] => 1080
                            [link] =>  https://player.vimeo.com/external/...  (C'est celle là que je veux !)
                            [created_time] => 2020-07-12T13:11:34+00:00
                            [fps] => 25
                            [size] => 12422236
                            [md5] => 8a44f598196a0f6c12728cfffaaae9d3
                        )

                    [1] => Array
                        (
                           // (...)
                        )

                    [2] => Array
                        (
                           // (...)
                        )

Modifié par Loraga (04 Aug 2020 - 17:12)
Modérateur
Et l'eau,

En faisant simple, un truc du genre :

<?php 

$un_array = [
    'body' => [/*...*/],
];
foreach(current($un_array)['files'] as $v){
    echo $v['link'];
}

?>

Modifié par niuxe (04 Aug 2020 - 20:37)
Salut,

Le problème avec PHP, c'est qu'il a le cul entre 2 chaises. La structure que tu présentes est un tableau, mais elle représente en réalité un objet.

class Body {
    public DateTime $last_user_action_event_date;
    public File[] $files;
}

class File {
    public $quality;
    public $type;
    public $width;
    public $height;
    public $link;
    public $created_time;
}


En représentant les données sous cette forme, on voit mieux qu'il n'y a qu'une seule collection et qu'il ne faut donc qu'une seule boucle pour accéder aux données que tu veux.

foreach ($body->files as $file) {
    $file->link;
}


Ce qui correspond au code de niuxe en manipulant des tableaux.
Modifié par Ostara (05 Aug 2020 - 15:58)
Merci messieurs pour vos réponses, c'est parfait Smiley smile

Merci Ostara pour tes explications ! Je ne suis pas encore hyper à l'aise avec la POO, mais j'ai très envie de m'y mettre et je vais avoir dès la semaine prochaine du temps pour commencer à apprendre.