#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’];….