Ayuda como puedo recorrer este array para obtener todos los Ids.?

  • Autor Autor YeltsinReyes
  • Fecha de inicio Fecha de inicio
YeltsinReyes

YeltsinReyes

Mi
Verificación en dos pasos activada
Verificado por Binance
Hola, tengo este array y no eh podido recorrerlo para obtener los ids de los likes, quien, me ayuda.?


PHP:
{
  "data": [
    {
      "id": "971799806218022_1039985532732782",
      "likes": {
        "data": [
          {
            "id": "1100009933004422665577888855000"
          },
          {
            "id": "8899334422664444774400223334411"
          }
        ],
        "paging": {
          "cursors": {
            "after": "",
            "before": ""
          }
        }
      }
    }
  ],
  "paging": {
    "previous": "",
    "next": ""
  }
}
 
eso no es un array de php 😕 mas parece json asi que primero deberias pasarlo a array con json_decode() :encouragement:
 
Disculpa, si lo eh pasado a array pero luego nose como recorrerlo con foreach.!!

eso no es un array de php 😕 mas parece json asi que primero deberias pasarlo a array con json_decode() :encouragement:
 
Yo personalmente lo veo complicado recorrer con un foreach, sobre todo por que tiene varios niveles y no sigue una concordancia ¿No te vale acceder directamente a los datos a través de sus llaves o en su defecto, recorrer exclusivamente las llaves más extensas como data?
 
Lo podrías hacer con una función recursiva, algo como:
PHP:
Array ids = [];

function getId(array)
    foreach array as key => element
         if element is array
              getId(element)
         elseif key == 'id'
              ids[] = element


Saludos.

- - - Actualizado - - -

Así quedaría:
PHP:
<?php
$ids = [];

function getIDs(array $array)
{
	global $ids;

	foreach ($array as $key => $element) {
		if (is_array($element)) {
			getIDs($element);
		} elseif ($key == 'id') {
			$ids[] = $element;
		}
	}
}

getIDs($array);
 
Última edición:
Hice un código para ti, espero te sirva. 🙂

PHP:
$json = '{ 
  "data": [ 
    { 
      "id": "971799806218022_1039985532732782", 
      "likes": { 
        "data": [ 
          { 
            "id": "1100009933004422665577888855000" 
          }, 
          { 
            "id": "8899334422664444774400223334411" 
          } 
        ], 
        "paging": { 
          "cursors": { 
            "after": "", 
            "before": "" 
          } 
        } 
      } 
    } 
  ], 
  "paging": { 
    "previous": "", 
    "next": "" 
  } 
}';
$array = json_decode($json, true);

for ($index = 0; $index < count($array['data']); $index++) {
    $ids_publi = $array['data'][$index]['id'];
    $ids_likes = $array['data'][$index]['likes']['data'];
    echo 'ID PUBLICACIÓN: '.$ids_publi;
    echo '<br/>';
    echo '-- IDS LIKES:';
    foreach ($ids_likes as $row) {        
        echo '<br/>';
        echo '---- ID:'.$row['id'];        
    }
    echo '<br/><br/>';
}
 
Muchas gracias por su ayuda, probare los ejemplos! :encouragement:

- - - Actualizado - - -

Use este codigo y me funciono! :encouragement:

PHP:
$likesIds = array();
	foreach($getPostLikes['data'] as $key){
		if($key['likes']['data'] != ''){
			foreach($key['likes']['data'] as $key){
				if($key['id'] != $getMe['id']){
					array_push($likesIds, $key['id']);
				}
			}
		}
	}
 
Atrás
Arriba