Как вернуть json без его ключа - PullRequest
0 голосов
/ 15 марта 2019

У меня есть маршрут /json.json возврат

[{"titre":"Symfony"},{"titre":"Laravel"},{"titre":"test"}]

Но я хочу вернуть только такие значения, как:

["Symfony","Laravel","test"]

Это мой контроллер

   /**
     * @Route("/tags.json", name="liste_tags")
     * @param Request $request
     * @return \Symfony\Component\HttpFoundation\JsonResponse
     */
    public function index()
    {

        $tags = $this->getDoctrine()
            ->getRepository(Tag::class)
            ->findAll();
        return $this->json($tags, 200, [], ['groups' => ['public'] ]);
    }

С этой аннотацией в сущности

/**
 * @param string $titre
 * @Groups({"public"})
 * @return Tag
 */
public function setTitre(string $titre): self
{
    $this->titre = $titre;

    return $this;
}

Ответы [ 2 ]

3 голосов
/ 15 марта 2019

Вы можете использовать функцию array_column , чтобы получить значения из столбца titre

$tags = array_column($tags, 'titre');

0 голосов
/ 15 марта 2019

Если вы уверены, что ключи всегда будут titre , вы можете использовать array_map

<?php
//Your JSON, decoded to get an array
$array = json_decode('[{"titre":"Symfony"},{"titre":"Laravel"},{"titre":"test"}]', true);

// Loop over the array to fetch only the value of "titre".
$result = array_map(function($e) {
    return $e['titre'];
}, $array);

var_dump($result);

Это должно показать:

array(3) {
  [0] =>
  string(7) "Symfony"
  [1] =>
  string(7) "Laravel"
  [2] =>
  string(4) "test"
}
...