Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: $francisco en Noviembre 04, 2014, 07:39:50 PM

Título: [SOLUCIONADO][PHP] Error: Undefined offset: 1
Publicado por: $francisco en Noviembre 04, 2014, 07:39:50 PM
Muy buenas y saludos a todos.

función php:

Código (php) [Seleccionar]
function getData($data){
$lines = explode("\n", $data);
$keyarray = array();
$num = count($lines);

for($i=1; $i<$num;$i++){
//list($key,$var) = split("=",$lines[$i],2);
$works = split("=",$lines[$i]);
$keyArray[$works[0]] = $works[1];
echo("key: ".$works[0]." value: ".$works[1]);
}
return array($lines[0],$keyArray);
}


mas código:

Código (php) [Seleccionar]
$responsePaypal = getData($var);

if(strpos($responsePaypal[0],'SUCCESS') === 0 AND $code == 200){
echo "SUCCESS!!!";
}


texto que recive en la variable data:

SUCCESS\n
mc_gross=20.00\n
invoice=AF000001\n
protection_eligibility=Eligible\n
address_status=confirmed\n
payer_id=ADSZV7LHTCJM4\n
tax=0.00\n
address_street=Candy+Road+77\n
payment_date=12%3A04%3A18+Oct+19%2C+2010+PDT\n
payment_status=Completed\n
charset=windows-1252\n
address_zip=99501\n
first_name=Alice\n
mc_fee=0.88\n
address_country_code=US\n
address_name=Alice+Foobar\n
custom=\n
payer_status=unverified\n
business=paypal%40business.example.com\n
address_country=United+States\n
address_city=Anchorage\n
quantity=1\n
payer_email=alice.foobar%40example.com\n
txn_id=6BC88318RN685282M\n
payment_type=instant\n
last_name=Foobar\n
address_state=AK\n
receiver_email=paypal%40business.example.com\n
payment_fee=0.88\n
receiver_id=JNNUMM42GJB9U\n
txn_type=web_accept\n
item_name=Stuffed+bear\n
mc_currency=USD\n
item_number=BEAR05\n
residence_country=US\n
receipt_id=3354-8100-5749-2926\n
handling_amount=0.00\n
transaction_subject=Stuffed+bear\n
payment_gross=20.00\n
shipping=0.00\n


me imprime todo esto:

......
......
......
......
Notice: Undefined offset: 1 in /var/www/pay/index.php on line 82
key: value: key: payment_gross value: 20.00
Notice: Undefined offset: 1 in /var/www/pay/index.php on line 81

Notice: Undefined offset: 1 in /var/www/pay/index.php on line 82
key: value: key: shipping value: 0.00
Notice: Undefined offset: 1 in /var/www/pay/index.php on line 81

Notice: Undefined offset: 1 in /var/www/pay/index.php on line 82
key: value: SUCCESS!!!


Como podéis ver al final de todo me llega como si todo estuviera bien, pero me dice que esta indefinido la offset 1, pero para depurar el código hice unas impresiones como podéis ver de el contenido de el array que devuelve la función split, y el array esta ocupando el offset 0 y el 1 entonces ¿A que se debe el error?

gracias.

Título: Re:[PHP]Error: Undefined offset: 1
Publicado por: fermino en Noviembre 04, 2014, 09:32:51 PM
¿Qué código está en la línea 82 del index?
Título: Re:[PHP]Error: Undefined offset: 1
Publicado por: $francisco en Noviembre 06, 2014, 06:56:38 AM
En la linea 8 del codigo php que puse en
Código (php) [Seleccionar]

$works = split("=",$lines[$i]);
Título: Re:[PHP]Error: Undefined offset: 1
Publicado por: kid_goth en Noviembre 06, 2014, 01:32:14 PM
en el For, no lo inicies desde 1 ponlo desde 0 :)

Código (php) [Seleccionar]

for($i=0; $i<$num;$i++){
//...


y por otro lado creyendo que es mejor usa preg_split en vez de explode (aunque bueno daría casi igual)

[Edito]

Si es el offset 1 es que no te esta haciendo el explode... pregunta... el $data viene tal cual lo muestras o sea con el \n?? si es asi intenta explode("\\n", $data) o con comillas simples explode('\n', $data);
Título: Re:[PHP]Error: Undefined offset: 1
Publicado por: $francisco en Noviembre 11, 2014, 01:35:50 PM
Gracias, todo solucionado, lo solucioné cambiando en el for el inicio como me dijisteis desde 0 y cambiando el explode poniendo comillas simples quedo de la siguiente manera.

Código (php) [Seleccionar]
function getData($data){
$lines = explode('\n', $data);
$keyarray = array();
$num = count($lines);

for($i=0; $i<$num;$i++){
$works = split("=",$lines[$i]);
$keyArray[$works[0]] = $works[1];
}
return array($lines[0],$keyArray);
}


y otra cosa, ¿cual es la diferencia entre usar comillas simples y dobles en el caso de explode para palabras reservadas como "\n"?

en el código que yo tengo si esta "\n" porque es una simulación que estoy haciendo ha paypal, lo almaceno en una variable.

Código (php) [Seleccionar]
$var = <<<EOT
SUCCESS\n
mc_gross=20.00\n
invoice=AF000001\n
protection_eligibility=Eligible\n
address_status=confirmed\n
payer_id=ADSZV7LHTCJM4\n
tax=0.00\n
address_street=Candy+Road+77\n
payment_date=12%3A04%3A18+Oct+19%2C+2010+PDT\n
payment_status=Completed\n
charset=windows-1252\n
address_zip=99501\n
first_name=Alice\n
mc_fee=0.88\n
address_country_code=US\n
address_name=Alice+Foobar\n
custom=\n
payer_status=unverified\n
business=paypal%40business.example.com\n
address_country=United+States\n
address_city=Anchorage\n
quantity=1\n
payer_email=alice.foobar%40example.com\n
txn_id=6BC88318RN685282M\n
payment_type=instant\n
last_name=Foobar\n
address_state=AK\n
receiver_email=paypal%40business.example.com\n
payment_fee=0.88\n
receiver_id=JNNUMM42GJB9U\n
txn_type=web_accept\n
item_name=Stuffed+bear\n
mc_currency=USD\n
item_number=BEAR05\n
residence_country=US\n
receipt_id=3354-8100-5749-2926\n
handling_amount=0.00\n
transaction_subject=Stuffed+bear\n
payment_gross=20.00\n
shipping=0.00\n
EOT;
Título: Re:[PHP] Error: Undefined offset: 1
Publicado por: kid_goth en Noviembre 11, 2014, 04:50:14 PM
las comillas dobles interpretan mientras las simples no, puede probar asi y veras la diferencia:

var $proof = 'hola';
echo "$proof \r\n Otra Linea?\n";
echo '$proof \r\n Otra Linea?';

la salida seria:

hola
Otra Linea?
$proof \r\n Otra Linea?

:)
Título: Re:[PHP] Error: Undefined offset: 1
Publicado por: $francisco en Noviembre 18, 2014, 01:28:50 PM
Pues todo aclarado  :)