PHP - Undefined Offset:0

 
Vista:

Undefined Offset:0

Publicado por Cram (3 intervenciones) el 16/06/2019 14:04:03
Hola estoy empezando con esto de php y he realizado un código que me está dando error Notice: Undefined offset: 0 in C:\xampp\htdocs\vs api3.php on line 31.

Necesito descargar los datos de diferentes canales. La id del canal está guardada cada una en un txt. Lo que quiero es que lea la id que hay guardada en el archivo txt y la almacene en la variable $channel_id y después descargue los datos de los suscriptores de esa id.
Y de paso si pueden ayudarme a que descargue también el icono del canal de 88x88... Sería un ahorro de tiempo en descubrirlo considerable.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<body>
 
<?php
 
function multiexplode ($delimiters,$string) {
 
    $ready = str_replace($delimiters, $delimiters[0], $string);
    $launch = explode($delimiters[0], $ready);
    return  $launch;
}
 
$text = file_get_contents("C:/topvs2.txt");
$exploded = multiexplode(array(" (","#1 ",") - #2 ",") - #3 ",") - #4 ",") - #5 ",") - #6 ",") - #7 ",") - #8 ",") - #9 ",") - #10 ",") - #11 ",") - #12 ",") - #13 ",") - #14 ",") - #15 ",") - #16 ",") - #17 ",") - #18 ",") - #19 ",") - #20 "),$text);
 
$id1= file_get_contents("C:/$exploded[3].txt");
$exploded1 = multiexplode(array("|"),$id1);
 
$channel_id = $exploded1[1];
$api_key = "MI_API_KEY";
$api_response = file_get_contents('https://www.googleapis.com/youtube/v3/channels?part=statistics&id='.$channel_id.'&fields=items/statistics/subscriberCount&key='.$api_key);
$api_response_decoded = json_decode($api_response, true);
echo $api_response_decoded['items'][0]['statistics']['subscriberCount'];
 
?>
</body>

Gracias de antemano.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Undefined Offset:0

Publicado por Mauro (1036 intervenciones) el 16/06/2019 21:52:10
Pues lo primero que veo es que no debe existir un índice 0 en el arreglo $api_response_decoded['items'].

Lo primero que deberías hacer es mostrar por pantalla el contenido del array (con var_dump o, mejor, si usas un IDE, con un debugger.

En el código que publicaste no hay línea 31, ¿a qué línea se refiere el error?

En esta línea:

1
$id1= file_get_contents("C:/$exploded[3].txt");

Veo algo que puede ser problemático. Si lo que estás queriendo hacer es tomar la posición 3 del arreglo $exploded como nombre del archivo deberías escribirlo así:

1
$id1= file_get_contents("C:/{$exploded[3]}.txt");

De otro modo, el intérprete entenderá que la variable a expandir es $exploded y el [3] se usará literalmente como nombre del archivo... dudo que eso funcione.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Undefined Offset:0

Publicado por Cram (3 intervenciones) el 16/06/2019 22:41:34
Hola, gracias por la respuesta.
Si tiene razón disculpe el error en este caso lo da en la línea 22. Lo que he quitado la cabecera y por eso no concuerda el número de la línea.
He probado los cambios con llave y continua igual.
Le explico, en el archivo topvs2.txt hay 20 usuarios, lo que hago es leer este archivo y de ahí hago un array.
Entonces cada usuario tiene un nombre_de_usuario.txt con su nombre de usuario, accedo a el y leo la id de canal que tiene de youtube en el archivo $exploded[x].txt, lo leo con exploded, porqué es el que me lee el nombre que hay en el array que corresponde a cada usuario.
Después lo paso a $channel_id y busco la $api_response y teóricamente después me tendría que imprimir los suscriptores.
Cuando hago un print_r($channel_id) aparece la id del canal correctamente.
He de decir que en el código si pegas directamente la id de un usuario si funciona, por lo que deduzco y usted bien dice el problema lo tengo cuando quiero leer el archivo usuario.txt con exploded.
En definitiva necesito leer la id que está en formato texto de un .txt y pasarla a $channel_id, el problema es que los usuarios van cambiando, y los txt se van creando y la consulta siempre es respecto al usuario que hay en esa determinada posición, osea son dinámicos.
Gracias por su ayuda, llevo mucho tiempo con esto y no consigo encontrar la solución algo que creo que es sencillo.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Undefined Offset:0

Publicado por Mauro (1036 intervenciones) el 18/06/2019 01:27:26
Me parece que el problema está en la línea $id1= file_get_contents("C:/$exploded[3].txt");

Fíjate en mi comentario anterior.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Undefined Offset:0

Publicado por Cram (3 intervenciones) el 18/06/2019 14:25:31
Hola Mauro, gracias por su respuesta.
Finalmente he conseguido hacerlo funcionar modificando la línea 18 y dejándola así: $channel_id = trim($exploded1[1];)

Al parecer al crearse el archivo con la id, añade un espacio en blanco y de ahí que me diese error.
Gracias por la ayuda, y hasta la próxima!
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar