|
Posted by My Pet Programmer on 12/20/07 08:29
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,$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.googlegroups.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.
>>
>
>
>
Navigation:
[Reply to this message]
|