Article View: chile.comp.programacion
Article #3202Re: Pregunta PHP, arreglos con distinta llave
From: Jos� Miguel Santib��ez
Date: Wed, 27 Apr 2005 22:39
Date: Wed, 27 Apr 2005 22:39
110 lines
3939 bytes
3939 bytes
En el cap�tulo anterior (news:Xns9645B44861D24jmsnews@200.27.221.71),
"Jos� Miguel Santib��ez" <jms@nospam.nivel5.cl> dijo:
> En el cap�tulo anterior (news:d4os0r$319$1@localhost.localdomain),
> Chano <jgarrido@dcc.uchile.NOSPAM.cl> dijo:
>
>> Tengo 3 arrays, pero las llaves de cada elemento no son
>> correlativas. O
>> sea, por ejemplo
>>
>> $a=array("1322" => "hola",
>> "1578" => "chao",
>> "656" => "bla");
>>
>> $b=array("3234" => "holdd",
>> "788" => "jlklkl");
>>
>> $c=array("8788" => "algo",
>> "89990" => "jhkjh",
>> "7876" => "klkjk",
>> "87678" => "ikjkj");
>>
>> El asunto es que necesito leer el primer elemento de cada arreglo,
>> luego el segundo de cada arreglo, etc. Todos los arreglos tienen
>> distinto largo.
>>
>> Como lo puedo hacer?
>>
>> Me dijeron que una forma es hacerlo con punteros de php, sacar el
>> current y luego avanzarlo con next. Hay otra manera mejor?
>
> no... Aunque parece que no fue la mejor manera de explicartelo, el
> asunto es muy simple:
>
> //primero se va al primer elemento de cada arreglo:
> reset($a);
> reset($b);
> reset($c);
>
> // ahora habr�a que hacer un ciclo y controlar el fin de los
> arreglos... // Como todos tienen distintos tama�os habr�a que ver como
> se controla... podr�a ser por ejemplo:
> for ($i = 0; $i < count($a) || $i < count($b) || $i < count($c); $i++)
> {
>
> if ($i < count($a)) {
> $llave_a = key($a);
> // sacamos el elemento del arreglo, hay dos maneras forma 1:
> $elemento_a = current($a);
> // movemos el puntero interno del arreglo:
> next($a);
> } else {
> $llave_a = '';
> $elemento_a = '';
> }
>
> if ($i < count($b)) {
> $llave_b = key($b);
> // sacamos el elemento del arreglo, hay dos maneras forma 2:
> $elemento_b = $b[$llave_b];
> // movemos el puntero interno del arreglo:
> next($b);
> } else {
> $llave_b = '';
> $elemento_b = '';
> }
>
> if ($i < count($c)) {
> $llave_c = key($c);
> // sacamos el elemento del arreglo, hay dos maneras forma 1:
> $elemento_c = current($c);
> // movemos el puntero interno del arreglo:
> next($c);
> } else {
> $llave_c = '';
> $elemento_c = '';
> }
>
> // ahora hago lo que se necesite con los valores...
> }
hmm...
Otra opci�n:
$claves_a = array_keys($a);
$claves_b = array_keys($a);
$claves_c = array_keys($a);
for ($i = 0; $i < count($a) || $i < count($b) || $i < count($c); $i++) {
// igual hay que usar los if...
$llave_a = $claves_a[$i];
$elemento_a = $a[$claves_a[$i]];
$llave_b = $claves_b[$i];
$elemento_b = $b[$claves_b[$i]];
$llave_c = $claves_c[$i];
$elemento_c = $c[$claves_c[$i]];
}
--
Jose M. Santiba�ez A.
<jms@nivel5.cl>
<http://caos.cl/jms>
Technical Details
Message-ID:
<Xns9645BDAA565CAjmsnews@200.27.221.71>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news.kjsl.com!news1.nivel5.cl!news.vcd.cl!not-for-mailReferences:
<d4os0r$319$1@localhost.localdomain> <Xns9645B44861D24jmsnews@200.27.221.71>Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,d75fd42cbe357c09
X-Google-Attributes: gid1593cb,public
X-Google-Language: SPANISH,ASCII
Newsgroups: chile.comp.programacion
Subject: Re: Pregunta PHP, arreglos con distinta llave
From: "Jos� Miguel Santib��ez" <jms@nospam.nivel5.cl>
References: <d4os0r$319$1@localhost.localdomain> <Xns9645B44861D24jmsnews@200.27.221.71>
Organization: Caos Consultores
Message-ID: <Xns9645BDAA565CAjmsnews@200.27.221.71>
User-Agent: Xnews/5.04.25
X-Face: +|NgjgFM{<rs%\Q|vUu16]a6,}?MJTA<!PEEI+x&Gw-Gyq+?$}fvo+.(,-r;)~Qzn)#{{nxU,OT?w^s<7m4ckCJ*L$c#I)yHL7b)GdU*#l
NNTP-Posting-Host: 105-250-90.adsl.terra.cl
Date: 27 Apr 2005 18:39:13 -0400
X-Trace: news.vcd.cl!not-for-mail 1114637953 105-250-90.adsl.terra.cl (27 Apr 2005 18:39:13 -0400)
Lines: 110
X-Authenticated-User: jms
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news.kjsl.com!news1.nivel5.cl!news.vcd.cl!not-for-mail