Печать метаданных в Woocomerce Rest Api

#php #wordpress

#php #WordPress

Вопрос:

Я новичок в woocomerce Rest API. Я получаю доступ ко всем данным из WordPress. Теперь я хочу распечатать метаданные. Api возвращает мне данные в этом json :-

 [meta_data] => Array
                (
                    [0] => Array
                        (
                            [id] => 53380
                            [key] => slide_template
                            [value] => default
                        )

                    [1] => Array
                        (
                            [id] => 53381
                            [key] => payment_details
                            [value] => no data found
                        )

                    [2] => Array
                        (
                            [id] => 53382
                            [key] => wf_invoice_number
                            [value] => CNC04216
                        )
              )
 

После декодирования json я хочу распечатать эти метаданные.
Я пытаюсь печатать так

 <?php  echo $std[$k]['meta_data'][2]->wf_invoice_number; ?>
 

Но, возможно, это не объект класса std…
Как я могу повторить значения метаданных.

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

1. возможно echo $std[$k]['meta_data'][2]['key'];

2. Обратите внимание: неопределенный индекс: wf_invoice_number …. но в нем есть данные в этом ключе….

3. wf_invoice_number хранятся ли данные в этом объекте, а не ключ для доступа

4. После выполнения print_r ($std[$ k][«meta_data»]) он показывает мне такие данные [7] => Array ( [id] => 50048 [ключ] => payment_details [значение] => оплачено ) ) ……

Ответ №1:

Мне немного неясно, в чем именно заключается ваша проблема — кажется, что у вас перепутаны значения и ключи

Данные из вопроса могут быть представлены с помощью этого фрагмента PHP

 $data=array(
    'meta_data'=>array(
        array('id'=>53380,'key'=>'slide_template','value'=>'default'),
        array('id'=>53381,'key'=>'payment_details','value'=>'no data found'),
        array('id'=>53382,'key'=>'wf_invoice_number','value'=>'CNC04216'),
    )
);
 

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

 foreach( $data['meta_data'] as $arr ){
    printf(
        '<pre>
            id: %s
            key: %s
            value: %s
        </pre>',
        $arr['id'],
        $arr['key'],
        $arr['value']
    );
}
 

Это выведет:

 <pre>
    id: 53380
    key: slide_template
    value: default
</pre>
<pre>
    id: 53381
    key: payment_details
    value: no data found
</pre>
<pre>
    id: 53382
    key: wf_invoice_number
    value: CNC04216
</pre>
 

Для доступа к определенной записи по индексу (например, используя индекс, равный 2)

 #specific row
echo $data['meta_data'][2]['key']; // outputs: wf_invoice_number
 

Чтобы отобразить ключи из определенной записи, снова с индексом 2:

 #keys
printf('<pre>%s</pre>',print_r( array_keys( $data['meta_data'][2] ), true ) );
 

Для отображения соответствующих значений с тем же индексом:

 #values
printf('<pre>%s</pre>',print_r( array_values( $data['meta_data'][2] ), true ) );
 

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

1. Проблема в этом массиве заключается в том, что он вложен в четыре раза… Woocomerce отвечает в формате json, и при декодировании его в php мы обнаружим четырехкратно вложенный массив. Поэтому я использую array_push, чтобы создать новый массив, а также ввести значение с помощью ключа, например:- $meta=array(); foreach ($stdf как $key => $value) { array_push($meta, $stdf[$key][‘key’]); $meta[$stdf[$key][‘ключ’]] = $stdf[$key][‘Значение’]; } $payment_details = $meta[‘payment_details’];….