Отображать конкретные значения массива через запятую

Я пытался отобразить конкретные значения массива, разделенные запятой (за исключением последнего).

Вот мой массив:

   "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);
// ...
Другие вопросы по тегам