Jump to content

***SOLVED***building an associative array by comparing 2 arrays


ultimatemonty

Recommended Posts

I've got two arrays that are being compared in a function. The function is supposed to loop through all the values one array, looking for matches in another array. If it finds a match, it sets an element in the third array to 1. If it finds no matches, it sets the element to 0.

Here's the code.
[code]function doClassTakenList($classes,$courses)
{
$i=0;
$count = count($classes);
do
{
          $class = $classes[$i];

if(array_search($class,$courses))
{
$list[$class][0] = '1';
}
else
{
$list[$class][0] = '0';
}
$i++;
}
        while($i<$count);
return($list);
} [/code]
$classes is a one-dimensional, numerically indexed array containing a list of all classes for a program. IE:
[code]$classes = array('SPEC 3110','SPEC3120','SPEC3130','SPEC3140','INTP4010');[/code]
$courses is a one-dimensional, numerically indexed array containing a list of classes a student has taken. IE:
[code]$courses = array('SPEC 3110','SPEC3180','INTP4010');[/code]
$list is an array containing each class and a '1' (for taken) or a '0' (for not taken).
instead of returning a numerically indexed, multi-dimensional array (which makes it a real PITA to access the classnames in the $list array), I'd like to build the array something like:
[code]if(array_search($class,$courses))
{
$list[$class => '1'];
}
else
{
$list[$class => '0']
} [/code]
this way it's easier to get the class and the associated value.
using that particular example, I get a [b]Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting ']'[/b]

anyone have any ideas of how to build what I'm needing?
Link to comment
Share on other sites

SOLVED!
solution was very simple once I cleared my head and tackled it again...
[code]function doClassTakenList($classes,$courses)
{
$i=0;
$count = count($classes);

do
{
$class = $classes[$i];

if(array_search($class,$courses))
{
$list[$class] = '1';
}
else
{
$list[$class] = '0';
}
$i++;
} while($i<$count);
return($list);
}[/code]
Link to comment
Share on other sites

Here's a much simpler method
[code]<?php
function doClassTakenList($classes,$courses)
{
    foreach ($classes as $class) {
       $list[$class] = (in_array($class,$courses))?'1':'0';
    }
    return $list;
}
[/code]

However, I followed your example of setting the value as the string of 0 or 1. It would be better to set the values as true/false so that you can do a true false tests on it. This is what I would use:

[code]<?php
function doClassTakenList($classes,$courses)
{
    foreach ($classes as $class) {
        $list[$class] = in_array($class,$courses);
    }
    return $list;
}
[/code]
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.