Connecting Tech Pros Worldwide Forums | Help | Site Map

one or two liners apprecaited!

laredotornado@zipmail.com
Guest
 
Posts: n/a
#1: May 11 '06
Hi, I'm using PHP 4. I have two scalar variables, each containing
comma separated lists of numbers

$big_list = "1,2,3,4,5,6,7,8";
$small_list = "5,4,6";

"$small_list" will always contain less elements than "$big_list" and
all of "$small_list"s numbers will be included in "$big_list". I want
to get a variable that contains "$big_list" minus "$small_list". In
the above example, the resulting varaible would contain "1,2,3,7,8".

Any short cuts are greatly appreciated.

Thanks, - Dave


Oli Filth
Guest
 
Posts: n/a
#2: May 11 '06

re: one or two liners apprecaited!


laredotornado@zipmail.com said the following on 11/05/2006 15:32:[color=blue]
> Hi, I'm using PHP 4. I have two scalar variables, each containing
> comma separated lists of numbers
>
> $big_list = "1,2,3,4,5,6,7,8";
> $small_list = "5,4,6";
>
> "$small_list" will always contain less elements than "$big_list" and
> all of "$small_list"s numbers will be included in "$big_list". I want
> to get a variable that contains "$big_list" minus "$small_list". In
> the above example, the resulting varaible would contain "1,2,3,7,8".[/color]

It's easier to deal with arrays than strings, so convert your lists to
arrays using explode(). Then use some combination of the PHP
array-handling functions; array_diff() might do the job you're after.


--
Oli
Ian Taylor
Guest
 
Posts: n/a
#3: May 11 '06

re: one or two liners apprecaited!


laredotornado@zipmail.com wrote:[color=blue]
> Hi, I'm using PHP 4. I have two scalar variables, each containing
> comma separated lists of numbers
>
> $big_list = "1,2,3,4,5,6,7,8";
> $small_list = "5,4,6";
>
> "$small_list" will always contain less elements than "$big_list" and
> all of "$small_list"s numbers will be included in "$big_list". I want
> to get a variable that contains "$big_list" minus "$small_list". In
> the above example, the resulting varaible would contain "1,2,3,7,8".
>
> Any short cuts are greatly appreciated.
>
> Thanks, - Dave
>[/color]

This one-liner should work:

print implode(",", array_diff(explode(",", $big_list), explode(",",
$small_list)));

However, if you're using it in code you (or someone else!) would need to
maintain in the future, it would be wise to expand it to increase
readability.
Closed Thread