Re: [PHP] Removing empty values from array

2009-06-25 Thread Robert Cummings

Martin Scotta wrote:

Hi all

I have this in a simple routine...

for($i=0, $if=count($array); $i$if; ++$i)
if( $array[$i] == '' )
{   
array_splice( $array, $i, 1);

--$i;
--$if;
}

My question: is this the better way to do it?


?php

foreach( array_keys( $array ) as $key )
{
if( (string)$array[$key] === '' )
{
unset( $array[$key] );
}
}

?

The above will not remove a value of '0' which IMHO is not empty. If you 
actually want to get rid of '0' also, then change === to == and remove 
the (string) cast.


Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Removing empty values from array

2009-06-25 Thread Ashley Sheridan
On Thu, 2009-06-25 at 17:52 -0300, Martin Scotta wrote:
 Hi all
 
 I have this in a simple routine...
 
 for($i=0, $if=count($array); $i$if; ++$i)
   if( $array[$i] == '' )
   {   
   array_splice( $array, $i, 1);
   
   --$i;
   --$if;
   }
 
 My question: is this the better way to do it?
 
 -- 
 Martin Scotta
 
array_filter() will return an array without any elements that equate to
false (empty strings, 0, false) although you can use the optional
argument to specify your own function which should return true if you
want to keep an element, or false if you want to ditch it, if you need
to eliminate only empty strings.


Thanks
Ash
www.ashleysheridan.co.uk


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Removing empty values from array

2009-06-25 Thread Eddie Drapkin
On Thu, Jun 25, 2009 at 5:00 PM, Ashley
Sheridana...@ashleysheridan.co.uk wrote:
 On Thu, 2009-06-25 at 17:52 -0300, Martin Scotta wrote:
 Hi all

 I have this in a simple routine...

 for($i=0, $if=count($array); $i$if; ++$i)
       if( $array[$i] == '' )
       {
               array_splice( $array, $i, 1);

               --$i;
               --$if;
       }

 My question: is this the better way to do it?

 --
 Martin Scotta

 array_filter() will return an array without any elements that equate to
 false (empty strings, 0, false) although you can use the optional
 argument to specify your own function which should return true if you
 want to keep an element, or false if you want to ditch it, if you need
 to eliminate only empty strings.


 Thanks
 Ash
 www.ashleysheridan.co.uk


 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php



I'd just do

foreach($array as $v) {
if($v === false || $v === null || $v === 0) {
unset($v);
}
}


I wouldn't do anything more complicated .

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Removing empty values from array

2009-06-25 Thread Robert Cummings

Eddie Drapkin wrote:

On Thu, Jun 25, 2009 at 5:00 PM, Ashley
Sheridana...@ashleysheridan.co.uk wrote:

On Thu, 2009-06-25 at 17:52 -0300, Martin Scotta wrote:

Hi all

I have this in a simple routine...

for($i=0, $if=count($array); $i$if; ++$i)
  if( $array[$i] == '' )
  {
  array_splice( $array, $i, 1);

  --$i;
  --$if;
  }

My question: is this the better way to do it?

--
Martin Scotta


array_filter() will return an array without any elements that equate to
false (empty strings, 0, false) although you can use the optional
argument to specify your own function which should return true if you
want to keep an element, or false if you want to ditch it, if you need
to eliminate only empty strings.


Thanks
Ash
www.ashleysheridan.co.uk


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




I'd just do

foreach($array as $v) {
if($v === false || $v === null || $v === 0) {
unset($v);
}
}


I wouldn't do anything more complicated .


And you would unfortunately find it doesn't work.

Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Removing empty values from array

2009-06-25 Thread Ashley Sheridan
On Thu, 2009-06-25 at 17:18 -0400, Eddie Drapkin wrote:
 On Thu, Jun 25, 2009 at 5:00 PM, Ashley
 Sheridana...@ashleysheridan.co.uk wrote:
  On Thu, 2009-06-25 at 17:52 -0300, Martin Scotta wrote:
  Hi all
 
  I have this in a simple routine...
 
  for($i=0, $if=count($array); $i$if; ++$i)
if( $array[$i] == '' )
{
array_splice( $array, $i, 1);
 
--$i;
--$if;
}
 
  My question: is this the better way to do it?
 
  --
  Martin Scotta
 
  array_filter() will return an array without any elements that equate to
  false (empty strings, 0, false) although you can use the optional
  argument to specify your own function which should return true if you
  want to keep an element, or false if you want to ditch it, if you need
  to eliminate only empty strings.
 
 
  Thanks
  Ash
  www.ashleysheridan.co.uk
 
 
  --
  PHP General Mailing List (http://www.php.net/)
  To unsubscribe, visit: http://www.php.net/unsub.php
 
 
 
 I'd just do
 
 foreach($array as $v) {
 if($v === false || $v === null || $v === 0) {
 unset($v);
 }
 }
 
 
 I wouldn't do anything more complicated .

Erm,

$array = array_filter($array);

is a lot less complicated than

foreach($array as $v) {
if($v === false || $v === null || $v === 0) {
unset($v);
}
}

and as it's a built-in function, likely faster.

Thanks
Ash
www.ashleysheridan.co.uk


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php