Отображать конкретные значения массива через запятую
Я пытался отобразить конкретные значения массива, разделенные запятой (за исключением последнего).
Вот мой массив:
"pure_taxonomies": {
"domaine": [
{
"term_id": 36,
"name": "Domaine TEST",
"slug": "domaine-test",
},
{
"term_id": 40,
"name": "DomaineTEST2",
"slug": "domainetest2",
}
],
Я хочу, чтобы каждое ИМЯ отображалось через запятую. Что я пробовал:
$response = wp_remote_get( add_query_arg( array(), 'http://website.com/wp-json/wp/v2/api' ) );
$postid = url_to_postid( $url );
if( !is_wp_error( $response ) && $response['response']['code'] == 200 ) {
$remote_posts = json_decode( $response['body'] );
foreach( $remote_posts as $remote_post ) {?>
<?php
foreach( $remote_post->pure_taxonomies->domaine as $pure_taxonomies_domaine ) {
$domaines = $pure_taxonomies_domaine->name;
echo $domaines .', ';
}
}
}
То, что я хотел бы, это Domaine TEST, DomaineTEST2
Спасибо
2 ответа
Решение
Ваш входной объект - JSON.
- Сначала вам нужно преобразовать его в массив, используя json_decode, с
assoc
флаг (второй параметр) установлен в true. Это даст вам ассоциативный массив. - Теперь вы можете получить все
names
в отдельный массив, используя функцию array_column. - Наконец, используйте функцию implode для преобразования массива в строку через запятую.
Попробуйте следующее:
if( !is_wp_error( $response ) && $response['response']['code'] == 200 ) {
// convert into multi-dimensional associative array
$remote_posts = json_decode( $response['body'], true );
foreach( $remote_posts as $remote_post ) {
// Use array_column function to get all the names
$names = array_column($remote_post['pure_taxonomies']['domaine'], 'name');
// use implode to convert into comma separated string
echo implode(', ', $names);
}
}
Пожалуйста, проверьте следующие коды:
// ...
$domaine_names = array();
foreach( $remote_post->pure_taxonomies->domaine as $pure_taxonomies_domaine ) {
$domaine_names[] = $pure_taxonomies_domaine->name;
}
echo implode(', ', $domaine_names);
// ...