Re: using two arrays in a "for each ..." statement

Re: using two arrays in a "for each ..." statement

am 04.11.2007 16:58:02 von mantrid

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,$nbyrsheldgroup,$nb percentgroup){
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." wrote in message
news:1194110709.612682.161550@19g2000hsx.googlegroups.com...
> On 3 Nov, 15:15, "mantrid" 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.
>

Re: using two arrays in a "for each ..." statement

am 20.12.2007 09:29:28 von My Pet Programmer

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,$nbyrsheldgroup,$nb percentgroup){
> 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." wrote in message
> news:1194110709.612682.161550@19g2000hsx.googlegroups.com...
>> On 3 Nov, 15:15, "mantrid" 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.
>>
>
>
>