PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.php > Re: using two arrays in a 'for each ..." statement
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Re: using two arrays in a 'for each ..." statement

Réponse
 
LinkBack Outils de la discussion
Vieux 04/11/2007, 16h58   #1
mantrid
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: using two arrays in a 'for each ..." statement

I was thinking along these lines initially but didnt know much about arrays.
So thought the easiest way was to use two separate fields. However the two
fields match, in that the commar separated numbers in one field match the
commar separated numbers in the other.
Ive used
$percentarray = explode(",", $brpercentgroup);
to create two separate keyed arrays for each field.

If I combined the fields (easy at this stage as the table has only recently
been created) how would I extract the field contents into an associative
array, as I presume that is what will be needed.
How would I modify it to create an associative array?
would it involve using the '=>' in the glue parameter somehow?

ie field contains 0,100,3,90,4,80,5,85,9,70
into an associative 0=>100,3=>90,4=>80,5=>85,9=>70
If the array was called $percentarray, I presume I would then use;

foreach ($percentarray as $yearvalue=>$percentvalue) {

to extract the two values to use in the function below?


*************
Function taper_rel($aim,
$yearsheld,$byrsheldgroup,$bpercentgroup,$nbyrshel dgroup,$nbpercentgroup){
if($aim = 1){
$yearsarray = explode(",", $byrsheldgroup);
$percentarray = explode(",", $brpercentgroup);
}elseif($aim = 0){
$yearsarray = explode(",", $nbyrsheldgroup);
$percentarray = explode(",", $nbrpercentgroup);
}
foreach ($yearsarray as &$yearvalue, $percentarray as &$percentvalue) {
if ($yearsheld==$yearvalue){
return $percentvalue;
}
}

unset($yearvalue);
unset($percentvalue);
}
***********************
Ian


"C." <colin.mckinnon@gmail.com> wrote in message
news:1194110709.612682.161550@19g2000hsx.googlegro ups.com...
> On 3 Nov, 15:15, "mantrid" <ian.dan...@virgin.net> wrote:
> > Hello
> > I wish to extract two arrays and use them simultaneously in a for each
> > statement
> > Ive tried
> > 'foreach ($yearsarray as &$yearvalue, $percentarray as &$percentvalue)

{'
> > and also
> > 'foreach ($yearsarray as &$yearvalue AND $percentarray as

&$percentvalue) {'
> >

>
> If each entry in one array matches one in the other then:
>
> foreach ($yeararray as $index=>$year) {
> print $year, $percentarray[$index];
> }
>
> Even if these were not compound data structures (as indicated in the
> remainder of your code) your data design is a mess; both values
> should be held in the same record in the same array.
>
> C.
>




  Réponse avec citation
Vieux 20/12/2007, 09h29   #2
My Pet Programmer
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: using two arrays in a 'for each ..." statement

If your arrays are in parallel, the you don't have to do anything fancy
with the language construct. If I had two arrays that were parallel like
that (having corresponding values in the same positions), I would
combine them like so:

$array1 ("apple", "orange", "banana");
$array2 ("pie", "juice", "smoothy");

$array3 = array();
for ($i = 0; $i < count($array1); ++$i) {
$array3[$array1[$i]] = $array2[$i];
}


And then you could use the

foreach ($array3 as $fruit=>$tastyTrest) {}


Or call on them as $array3["apple"];, etc

~A!

mantrid took the time to say:
> I was thinking along these lines initially but didnt know much about arrays.
> So thought the easiest way was to use two separate fields. However the two
> fields match, in that the commar separated numbers in one field match the
> commar separated numbers in the other.
> Ive used
> $percentarray = explode(",", $brpercentgroup);
> to create two separate keyed arrays for each field.
>
> If I combined the fields (easy at this stage as the table has only recently
> been created) how would I extract the field contents into an associative
> array, as I presume that is what will be needed.
> How would I modify it to create an associative array?
> would it involve using the '=>' in the glue parameter somehow?
>
> ie field contains 0,100,3,90,4,80,5,85,9,70
> into an associative 0=>100,3=>90,4=>80,5=>85,9=>70
> If the array was called $percentarray, I presume I would then use;
>
> foreach ($percentarray as $yearvalue=>$percentvalue) {
>
> to extract the two values to use in the function below?
>
>
> *************
> Function taper_rel($aim,
> $yearsheld,$byrsheldgroup,$bpercentgroup,$nbyrshel dgroup,$nbpercentgroup){
> if($aim = 1){
> $yearsarray = explode(",", $byrsheldgroup);
> $percentarray = explode(",", $brpercentgroup);
> }elseif($aim = 0){
> $yearsarray = explode(",", $nbyrsheldgroup);
> $percentarray = explode(",", $nbrpercentgroup);
> }
> foreach ($yearsarray as &$yearvalue, $percentarray as &$percentvalue) {
> if ($yearsheld==$yearvalue){
> return $percentvalue;
> }
> }
>
> unset($yearvalue);
> unset($percentvalue);
> }
> ***********************
> Ian
>
>
> "C." <colin.mckinnon@gmail.com> wrote in message
> news:1194110709.612682.161550@19g2000hsx.googlegro ups.com...
>> On 3 Nov, 15:15, "mantrid" <ian.dan...@virgin.net> wrote:
>>> Hello
>>> I wish to extract two arrays and use them simultaneously in a for each
>>> statement
>>> Ive tried
>>> 'foreach ($yearsarray as &$yearvalue, $percentarray as &$percentvalue)

> {'
>>> and also
>>> 'foreach ($yearsarray as &$yearvalue AND $percentarray as

> &$percentvalue) {'
>> If each entry in one array matches one in the other then:
>>
>> foreach ($yeararray as $index=>$year) {
>> print $year, $percentarray[$index];
>> }
>>
>> Even if these were not compound data structures (as indicated in the
>> remainder of your code) your data design is a mess; both values
>> should be held in the same record in the same array.
>>
>> C.
>>

>
>
>

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 16h55.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,11777 seconds with 10 queries