Печать таблицы или списка из сложного массива php

#php #arrays

#php #массивы

Вопрос:

У меня есть массив, который генерируется третьей стороной. Это означает, что я должен работать с заданным мне форматом массива. Ниже приведена выдержка массива из var_dump.

 { 
    [0]=> object(stdClass)#3510 (3) { 
        ["privacy"]=> string(1) "0" 
        ["name"]=> string(11) "jumpsuits" 
        ["token"]=> string(12) "PD21B62AIFFM" 
    } 
    [1]=> object(stdClass)#3509 (3) { 
        ["privacy"]=> string(1) "1" 
        ["name"]=> string(8) "helmets" 
        ["token"]=> string(12) "PL68C79RKYAP" 
    } 
} 
 

Я не программист php. Но мне нужно найти простой способ в PHP превратить данные массива в приведенном выше формате в таблицу из трех столбцов с заголовками «конфиденциальность», «имя» и «токен».

Если бы я мог просто начать с десяти вопросов о том, почему echo $array['name'][0] ничего не возвращает, я думаю, я мог бы разобраться с остальным.

Спасибо

Комментарии:

1. $array[0]->name .

2. [index] используется для массивов, ->property используется для объектов.

3. Очень благодарен за объяснение. Эта простая строка дала мне нужную перспективу.

Ответ №1:

Это массив объектов, поэтому вы можете зациклить его следующим образом;

 <?php
echo '<table>';
echo '<tr>';
echo '<td>';
echo 'Privacy';
echo '</td>';
echo '<td>';
echo 'Name';
echo '</td>';
echo '<td>';
echo 'Token';
echo '</td>';
echo '<tr>';
foreach($data as $row) {
    echo '<tr>';
    echo '<td>';
    echo $row->privacy;
    echo '</td>';
    echo '<td>';
    echo $row->name;
    echo '</td>';
    echo '<td>';
    echo $row->token;
    echo '</td>';
    echo '<tr>';    
}
echo '</table>';
 

Проверьте это в codepad
http://codepad.org/MhcaKKRP

Комментарии:

1. @user2755309 Если ответ решил вашу проблему, пожалуйста, отметьте как решенную

Ответ №2:

     <?php    
        $array = json_decode(json_encode($object), true); // convert array of object to assoc array
        //all array:
        var_dump(array_column($array, 'privacy')); //privacy as array
        var_dump(array_column($array, 'name')); //name as array
        var_dump(array_column($array, 'token')); //token'
        //specific data:
        $data['privacy'] = array_column($array, 'privacy');
        $data['name'] = array_column($array, 'name');
        $data['token'] = array_column($array, 'token');
        
        echo $data['name'][0];
        //etc
 

Комментарии:

1. Спасибо вам всем. Ответы помогли мне понять мои недостатки, и ответы решили мою проблему.

2. Если ваш ответ поможет вам, пожалуйста, отметьте как исправленный