Integração de API - Converter formato json

Então, estou criando uma pequena aplicação web para a empresa que trabalho utilizar uma API (de um sistema de vistorias de veiculos);
Essa API faz uma requisição e mostra as vistorias que ainda não foram exportadas (não foram baixadas ou enviadas via email atraves do sistema);
Coloquei o codigo da API e ele gera uma resposta no formato json.
Não tenho problemas com o código da API mesmo, ta tudo rodando ok, resultado esperado.

Mas na resposta ele mostra o ID de cada vistoria, o nome do vistoriador e o id do vistoriador. Eu precisaria usar os valores de ID depois para fazer outra requisição para gerar o pdf de cada vistoria.
Tem alguma forma de converter esse retorno json para que eu possa manipulá-lo como preciso?

Voce deve está pegando esse json através de uma requisição num sistema web, vc está usando javascript (ajax) para fazer isso? Se sim, vc consegue manipular o json tranquilamente.

Para converter precisa utilizar a função

json_decode

Exemplo:

$array_of_values = json_decode($json, TRUE);
$array_of_values['status']; // pega o valor OK
$array_of_values['data']; // pega o array dos valores obtidos

Consigo extrair cada “id” separado para utilizá-los depois em outra requisição?

Sim pode fazer um for por exemplo:

$ids = array();
foreach ($array_of_values['data'] as $item) {
    $ids[] = $item['id']; // acumulando somente os ids
}

ou com array_map da seguinte forma:

$ids = array_map(function($items) {
    return $item['id'];
}, $array_of_values['data']);

Então, eu estava com dificuldade para transformar o json em algo manipulável. Consegui. Usei a seguinte função:

$json = $response;

var_dump(json_decode($json));
var_dump(json_decode($json, true));

Ai gerou um array (eu acho) da seguinte forma:

object(stdClass)#1 (2) { 
	["status"]=> string(2) "OK" 
	["data"]=> array(467) { 
		[0]=> object(stdClass)#2 (3) { 
			["id"]=> string(6) "162214" 
			["vistoriador"]=> string(7) "Adolpho" 
			["vistoriaId"]=> string(41) "VXS111_ERT6453_3554520606600364253-2353_A" } 
		[1]=> object(stdClass)#3 (3) { 
			["id"]=> string(6) "160865" 
			["vistoriador"]=> string(12) "Lucas Comino" 
			["vistoriaId"]=> string(41) "VXS111_IJJ6666_3518690930551382627-8353_A" } 
		...
		[456] ...

Agora, não entendo muito de PHP, mas na próxima função preciso solicitar pelo id, como faço para identificar cada id específico? Qual a sintaxe, como escrevo que quero usar o valor id do [1] por exemplo?

Acabei de responder logo acima inclusive as duas duvidas:

Ficou assim:

$ids = array_map(function($response) {
    return $item['id'];
}, $array_of_values['data']);

Retornou duas mensagens de erro:

Notice : Undefined variable: array_of_values in C:\xampp\htdocs\apivex\testeapi.php on line 39

Warning : array_map(): Expected parameter 2 to be an array, null given in C:\xampp\htdocs\apivex\testeapi.php on line 39

Olha a preguiça o meu é um exemplo qual é o retorno do seu json_enconde ?

Se você não passar o valor certinho dá o erro, tem como colocar o seu código agora?

Meu encode retorna um $response.

Poste o seu código dessa parte! se não fica complicado ajudar

Essa parte faz a requisição que eu quero:

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.vexsoft.com.br/empresa/VXS111/vistorias/naoexportadas",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => false,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
} 

Ai retorna o json. Ok. Próxima parte do código:

$json = $response;

var_dump(json_decode($json));
var_dump(json_decode($json, true));

Aí ele gera isso:

object(stdClass)#1 (2) { 
	["status"]=> string(2) "OK" 
	["data"]=> array(467) { 
		[0]=> object(stdClass)#2 (3) { 
			["id"]=> string(6) "162214" 
			["vistoriador"]=> string(7) "Adolpho" 
			["vistoriaId"]=> string(41) "VXS111_ERT6453_3554520606600364253-2353_A" } 
		[1]=> object(stdClass)#3 (3) { 
			["id"]=> string(6) "160865" 
			["vistoriador"]=> string(12) "Lucas Comino" 
			["vistoriaId"]=> string(41) "VXS111_IJJ6666_3518690930551382627-8353_A" } 
		...
		[456] ...

Agora eu preciso usar cada id separado e perguntei qual a sintaxe para referenciar o id específico.

Só colocar uma variavel no lugar do var_dump e o restante o código já está respondido

Que variável???

// aqui é um array associativo por causa da configuração TRUE 
// no segundo parâmetro 
$array_of_values = json_decode($json, true); 
$ids = array_map(function($items) {
    return $item['id'];
}, $array_of_values['data']);

Isso ai em cima que faltava você fazer, então, por isso eu disse compare o seu código e use o meu para terminar, bom ta ai …

Basicamente é isso, a variável $ids é o um array que mostra array(1,2,3) (exemplo não real da saída.

Basicamente o código completo:

<?php

	$curl = curl_init();

	curl_setopt_array($curl, array(
	  CURLOPT_URL => "https://api.vexsoft.com.br/empresa/VXS111/vistorias/naoexportadas",
	  CURLOPT_RETURNTRANSFER => true,
	  CURLOPT_ENCODING => "",
	  CURLOPT_MAXREDIRS => 10,
	  CURLOPT_TIMEOUT => 0,
	  CURLOPT_FOLLOWLOCATION => false,
	  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	  CURLOPT_CUSTOMREQUEST => "GET",	  
	  CURLOPT_SSL_VERIFYPEER => 0,
	  CURLOPT_SSL_VERIFYHOST => 0
	));

	$response = curl_exec($curl);
	$err = curl_error($curl);
	curl_close($curl);

	if ($err) 
	{
	  echo "cURL Error #:" . $err;
	} 
	else 
	{
	  	$array_of_values = json_decode($response, true); 
		$ids = array_map(function($item) {
		    return (int)$item['id'];
		}, $array_of_values['data']);

		var_dump($ids);
	}