PHP: how can I delete empty/NULL elements from a multi-dimensional array.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting PHP: how can I delete empty/NULL elements from a multi-dimensional array.
# 1  
Old 12-05-2009
Question PHP: how can I delete empty/NULL elements from a multi-dimensional array.

Hi all

I have a file that i'm running and exec(cat ./dat) against..and putting its contents into any array, then doing an exploding the array into a multi-dimension array...
The 15 multi-dimensional arrays have elements that are null/empty, I would like to remove/unset these elements and then re-order the index/keys. i just cant seem to get anything to operate on this multi-dimensional array

when i run my code it outputs all elements...even the null/empty elements.

here is the cat'ed file contents (filename=dat)

dc=prvt,dc,dc=com mldap.wst1.com:389 sldap2.wst1.com:389 OK Last update: today at 6:16 AM
dc=prvt,dc,dc=com mldap.wst1.com:389 sldap1.wst1.com:389 OK Last update: today at 6:16 AM
dc=prvt,dc,dc=com mldap.wst1.com:389 sldap1.qprvt.com:389 OK Last update: today at 6:16 AM
dc=prvt,dc,dc=com mldap.wst1.com:389 sldap3.qprvt.com:389 OK Last update: today at 6:16 AM
dc=prvt,dc,dc=com mldap.wst1.com:389 sldap1.sprvt.com:389 OK Last update: today at 6:16 AM
dc=prvt,dc,dc=com mldap.wst1.com:389 sldap2.qprvt.com:389 OK Last update: today at 6:16 AM
dc=prvt,dc,dc=com mldap.wst1.com:389 sldap3.wst1.com:389 OK Last update: today at 6:16 AM
dc=prvt,dc,dc=com mldap.wst1.com:389 sldap2.sprvt.com:389 OK Last update: today at 6:16 AM
o.com mldap.wst1.com:389 sldap1.wst1.com:389 OK Last update: today at 6:16 AM
o.com mldap.wst1.com:389 sldap2.sprvt.com:389 OK Last update: today at 6:16 AM
o.com mldap.wst1.com:389 sldap1.sprvt.com:389 OK Last update: today at 6:16 AM
o.com mldap.wst1.com:389 sldap2.wst1.com:389 OK Last update: today at 6:16 AM
o.com mldap.wst1.com:389 sldap2.qprvt.com:389 OK Last update: today at 6:16 AM
o.com mldap.wst1.com:389 sldap3.qprvt.com:389 OK Last update: today at 6:16 AM
o.com mldap.wst1.com:389 sldap1.qprvt.com:389 OK Last update: today at 6:16 AM
o.com mldap.wst1.com:389 sldap3.wst1.com:389 OK Last update: today at 6:16 AM

HERE IS MY CODE...

Code:
<?php
$command='cat ./dat';
exec  ( $command  , $output , $return_var );
foreach($output as $lines){
$data2[] = explode(" ", $lines);
if(is_array($data2)){
foreach($data2 as $key => $value){
if($value == ""||$value == " "|| is_null($value)){
unset($data2[$key]);
}
} 
}
}
echo "AFTER NULL CLEANUP";
print_r($data2);
?>

AND HERE IS THE OUPUT....


root@mldap[bin]$ /opt/coolstack/php5/bin/php -f ./replcheck.php
AFTER NULL CLEANUPArray
(
[0] => Array
(
[0] => dc=prvt,dc,dc=com
[1] =>
[2] => mldap.wst1.com:389
[3] =>
[4] =>
[5] => sldap2.wst1.com:389
[6] =>
[7] => OK
[8] =>
[9] => Last
[10] => update:
[11] => today
[12] => at
[13] => 6:16
[14] => AM
)

[1] => Array
(
[0] => dc=prvt,dc,dc=com
[1] =>
[2] => mldap.wst1.com:389
[3] =>
[4] =>
[5] => sldap1.wst1.com:389
[6] =>
[7] => OK
[8] =>
[9] => Last
[10] => update:
[11] => today
[12] => at
[13] => 6:16
[14] => AM
)

[2] => Array
(
[0] => dc=prvt,dc,dc=com
[1] =>
[2] => mldap.wst1.com:389
[3] =>
[4] => sldap1.qprvt.com:389
[5] =>
[6] => OK
[7] =>
[8] => Last
[9] => update:
[10] => today
[11] => at
[12] => 6:16
[13] => AM
)

[3] => Array
(
[0] => dc=prvt,dc,dc=com
[1] =>
[2] => mldap.wst1.com:389
[3] =>
[4] => sldap3.qprvt.com:389
[5] =>
[6] => OK
[7] =>
[8] => Last
[9] => update:
[10] => today
[11] => at
[12] => 6:16
[13] => AM
)

[4] => Array
(
[0] => dc=prvt,dc,dc=com
[1] =>
[2] => mldap.wst1.com:389
[3] =>
[4] => sldap1.sprvt.com:389
[5] =>
[6] => OK
[7] =>
[8] => Last
[9] => update:
[10] => today
[11] => at
[12] => 6:16
[13] => AM
)

[5] => Array
(
[0] => dc=prvt,dc,dc=com
[1] =>
[2] => mldap.wst1.com:389
[3] =>
[4] => sldap2.qprvt.com:389
[5] =>
[6] => OK
[7] =>
[8] => Last
[9] => update:
[10] => today
[11] => at
[12] => 6:16
[13] => AM
)

[6] => Array
(
[0] => dc=prvt,dc,dc=com
[1] =>
[2] => mldap.wst1.com:389
[3] =>
[4] =>
[5] => sldap3.wst1.com:389
[6] =>
[7] => OK
[8] =>
[9] => Last
[10] => update:
[11] => today
[12] => at
[13] => 6:16
[14] => AM
)

[7] => Array
(
[0] => dc=prvt,dc,dc=com
[1] =>
[2] => mldap.wst1.com:389
[3] =>
[4] => sldap2.sprvt.com:389
[5] =>
[6] => OK
[7] =>
[8] => Last
[9] => update:
[10] => today
[11] => at
[12] => 6:16
[13] => AM
)

[8] => Array
(
[0] => o.com
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] => mldap.wst1.com:389
[15] =>
[16] =>
[17] => sldap1.wst1.com:389
[18] =>
[19] => OK
[20] =>
[21] => Last
[22] => update:
[23] => today
[24] => at
[25] => 6:16
[26] => AM
)

[9] => Array
(
[0] => o.com
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] => mldap.wst1.com:389
[15] =>
[16] => sldap2.sprvt.com:389
[17] =>
[18] => OK
[19] =>
[20] => Last
[21] => update:
[22] => today
[23] => at
[24] => 6:16
[25] => AM
)

[10] => Array
(
[0] => o.com
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] => mldap.wst1.com:389
[15] =>
[16] => sldap1.sprvt.com:389
[17] =>
[18] => OK
[19] =>
[20] => Last
[21] => update:
[22] => today
[23] => at
[24] => 6:16
[25] => AM
)

[11] => Array
(
[0] => o.com
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] => mldap.wst1.com:389
[15] =>
[16] =>
[17] => sldap2.wst1.com:389
[18] =>
[19] => OK
[20] =>
[21] => Last
[22] => update:
[23] => today
[24] => at
[25] => 6:16
[26] => AM
)

[12] => Array
(
[0] => o.com
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] => mldap.wst1.com:389
[15] =>
[16] => sldap2.qprvt.com:389
[17] =>
[18] => OK
[19] =>
[20] => Last
[21] => update:
[22] => today
[23] => at
[24] => 6:16
[25] => AM
)

[13] => Array
(
[0] => o.com
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] => mldap.wst1.com:389
[15] =>
[16] => sldap3.qprvt.com:389
[17] =>
[18] => OK
[19] =>
[20] => Last
[21] => update:
[22] => today
[23] => at
[24] => 6:16
[25] => AM
)

[14] => Array
(
[0] => o.com
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] => mldap.wst1.com:389
[15] =>
[16] => sldap1.qprvt.com:389
[17] =>
[18] => OK
[19] =>
[20] => Last
[21] => update:
[22] => today
[23] => at
[24] => 6:16
[25] => AM
)

[15] => Array
(
[0] => o.com
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
[11] =>
[12] =>
[13] =>
[14] => mldap.wst1.com:389
[15] =>
[16] =>
[17] => sldap3.wst1.com:389
[18] =>
[19] => OK
[20] =>
[21] => Last
[22] => update:
[23] => today
[24] => at
[25] => 6:16
[26] => AM
)

)
root@mldap[bin]$
# 2  
Old 12-05-2009
I ran your code as is and it seems to work fine:

output
Code:
php -f replcheck.php
AFTER NULL CLEANUPArray
(
    [0] => Array
        (
            [0] => dc=prvt,dc,dc=com
            [1] => mldap.wst1.com:389
            [2] => sldap2.wst1.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [1] => Array
        (
            [0] => dc=prvt,dc,dc=com
            [1] => mldap.wst1.com:389
            [2] => sldap1.wst1.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [2] => Array
        (
            [0] => dc=prvt,dc,dc=com
            [1] => mldap.wst1.com:389
            [2] => sldap1.qprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [3] => Array
        (
            [0] => dc=prvt,dc,dc=com
            [1] => mldap.wst1.com:389
            [2] => sldap3.qprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [4] => Array
        (
            [0] => dc=prvt,dc,dc=com
            [1] => mldap.wst1.com:389
            [2] => sldap1.sprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [5] => Array
        (
            [0] => dc=prvt,dc,dc=com
            [1] => mldap.wst1.com:389
            [2] => sldap2.qprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [6] => Array
        (
            [0] => dc=prvt,dc,dc=com
            [1] => mldap.wst1.com:389
            [2] => sldap3.wst1.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [7] => Array
        (
            [0] => dc=prvt,dc,dc=com
            [1] => mldap.wst1.com:389
            [2] => sldap2.sprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [8] => Array
        (
            [0] => o.com
            [1] => mldap.wst1.com:389
            [2] => sldap1.wst1.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [9] => Array
        (
            [0] => o.com
            [1] => mldap.wst1.com:389
            [2] => sldap2.sprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [10] => Array
        (
            [0] => o.com
            [1] => mldap.wst1.com:389
            [2] => sldap1.sprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [11] => Array
        (
            [0] => o.com
            [1] => mldap.wst1.com:389
            [2] => sldap2.wst1.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [12] => Array
        (
            [0] => o.com
            [1] => mldap.wst1.com:389
            [2] => sldap2.qprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [13] => Array
        (
            [0] => o.com
            [1] => mldap.wst1.com:389
            [2] => sldap3.qprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [14] => Array
        (
            [0] => o.com
            [1] => mldap.wst1.com:389
            [2] => sldap1.qprvt.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

    [15] => Array
        (
            [0] => o.com
            [1] => mldap.wst1.com:389
            [2] => sldap3.wst1.com:389
            [3] => OK
            [4] => Last
            [5] => update:
            [6] => today
            [7] => at
            [8] => 6:16
            [9] => AM
        )

# 3  
Old 12-06-2009
thanks for the response...by you doing that it cause me to switched my train of thought...

see....what I posted on the forum, I wraped in the "TABLE" tags for clarity, whiched auto-chomped out all extra white spaces between the array element lines, leaving only a single white space between the each value in each element...

you ran the test against this...
o.com mldap.wst1.com:389 sldap1.wst1.com:389 OK Last update: today at 6:16 AM

BUT in reality the file actually looked like this (just one line)
o.com"___EXTRA WHITE SPACE__"mldap.wst1.com:389 sldap1.wst1.com:389 OK Last update: today at 6:16 AM

So, there were extra white spaces between line data that I chomped out us:ing a preg_replace statement

now my code looks like this
Code:
<?php
$command='cat ./dat';
exec  ( $command  , $output , $return_var );
foreach($output as $lines){
$cleaned[] = preg_replace('/\s+/',' ',$lines);
}
foreach($cleaned as $lines){
$data2[] = explode(" ", $lines);
if(is_array($data2)){
foreach($data2 as $key => $value){
if(is_null($value) || $value == ""){
unset($data2[$key]);
}
}
}
}
print_r($data2);
?>

WHICH NOW GIVES ME THIS Smilie
root@mldap[bin]$ /opt/coolstack/php5/bin/php -f ./replcheck.php
Array
(
[0] => Array
(
[0] => dc=prvt,dc,dc=com
[1] => mldap.wst1.com:389
[2] => sldap2.wst1.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[1] => Array
(
[0] => dc=prvt,dc,dc=com
[1] => mldap.wst1.com:389
[2] => sldap1.wst1.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[2] => Array
(
[0] => dc=prvt,dc,dc=com
[1] => mldap.wst1.com:389
[2] => sldap1.qprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[3] => Array
(
[0] => dc=prvt,dc,dc=com
[1] => mldap.wst1.com:389
[2] => sldap3.qprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[4] => Array
(
[0] => dc=prvt,dc,dc=com
[1] => mldap.wst1.com:389
[2] => sldap1.sprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[5] => Array
(
[0] => dc=prvt,dc,dc=com
[1] => mldap.wst1.com:389
[2] => sldap2.qprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[6] => Array
(
[0] => dc=prvt,dc,dc=com
[1] => mldap.wst1.com:389
[2] => sldap3.wst1.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[7] => Array
(
[0] => dc=prvt,dc,dc=com
[1] => mldap.wst1.com:389
[2] => sldap2.sprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[8] => Array
(
[0] => o.com
[1] => mldap.wst1.com:389
[2] => sldap1.wst1.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[9] => Array
(
[0] => o.com
[1] => mldap.wst1.com:389
[2] => sldap2.sprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[10] => Array
(
[0] => o.com
[1] => mldap.wst1.com:389
[2] => sldap1.sprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[11] => Array
(
[0] => o.com
[1] => mldap.wst1.com:389
[2] => sldap2.wst1.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[12] => Array
(
[0] => o.com
[1] => mldap.wst1.com:389
[2] => sldap2.qprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[13] => Array
(
[0] => o.com
[1] => mldap.wst1.com:389
[2] => sldap3.qprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[14] => Array
(
[0] => o.com
[1] => mldap.wst1.com:389
[2] => sldap1.qprvt.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

[15] => Array
(
[0] => o.com
[1] => mldap.wst1.com:389
[2] => sldap3.wst1.com:389
[3] => OK
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

)
root@mldap[bin]$
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multi Dimensional array in bash

Hi, I'm developing a script which contains a multi dimensional array, however for some reason the array is not iterating. When executing the script, services are listed as arguments from argument 2. Ex voice data sms. service=${@:2}; for services in $service do ... (2 Replies)
Discussion started by: nms
2 Replies

2. Shell Programming and Scripting

Multi Dimensional array

I have an array of names. Each one of the name, has a number represented to it. For example A has an ID 8, B has an ID 2. What I am after is a for loop that when the array is in position 1, a particular variable is set to the value of position 1 in array 2 declare -a arr=("A" "B" "C"... (6 Replies)
Discussion started by: nms
6 Replies

3. Shell Programming and Scripting

working with null elements in an array

i have an array (with each element length "n") which is dynamic and has alphanumeric characters. i want to check if any of the elements of the array are null and replace it with a string of "n" zeros for that element. can you suggest me a code for the same. (1 Reply)
Discussion started by: mumbaiguy07
1 Replies

4. UNIX for Dummies Questions & Answers

Help: stdin to multi-dimensional array

I cant get out of this while loop at the beginning of my program. Just reading from stdin one char at a time and storing it into a multi-array. Need to fix it with in two hours. #include <sys/wait.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #include... (1 Reply)
Discussion started by: unt_engn
1 Replies

5. Shell Programming and Scripting

sorting multi dimensional array

Hi there, Can someone let me know how to sort the 2 dimensional array below by column 1 then by column 2? 22 55 2222 2230 33 66 44 58 222 240 11 25 22 60 33 45 output: 11 25 22 55 22 60 33 45 33 66 44 58 (6 Replies)
Discussion started by: phoeberunner
6 Replies

6. Shell Programming and Scripting

Match elements in an AWK multi-dimensional array

Hello, I have two files in the following format; file1: A B C D E F G H I J K L file2: 1 2 3 4 5 6 7 8 9 10 11 12 I have read them both in to multi-dimensional arrays. I need a file that has column 2 of the first file printed out for each column 3 of the second file ie... ... (3 Replies)
Discussion started by: cold_Que
3 Replies

7. Shell Programming and Scripting

PHP: Search Multi-Dimensional(nested) array and export values of currenly worked on array.

Hi All, I'm writing a nagios check that will see if our ldap servers are in sync... I got the status data into a nested array, I would like to search key of each array and if "OK" is NOT present, echo other key=>values in the current array to a variable so...eg...let take the single array... (1 Reply)
Discussion started by: zeekblack
1 Replies

8. Shell Programming and Scripting

PHP arrays as array elements

PHP question...I posted this on the Web Development forum, but maybe this is a better place! I have an SQL query that's pulled back user IDs as a set of columns. Rather than IDs, I want to use their names. So I have an array of columns $col with values 1,7,3,12 etc and I've got an array $person... (3 Replies)
Discussion started by: JerryHone
3 Replies

9. Shell Programming and Scripting

Multi Dimensional array in KSH

Is there any way to use multi dim. array in KSH ? (1 Reply)
Discussion started by: sinpeak
1 Replies

10. Shell Programming and Scripting

Using unset to delete array elements

Hi, I am writing a BASH script. My questions regard deleting elements of arrays. I have an array: michael-browns-powerbook-g4-15:~ msb65$ test_array=(1 2 3 4) michael-browns-powerbook-g4-15:~ msb65$ echo ${test_array} 1 2 3 4 To delete the second element of test_array I type:... (3 Replies)
Discussion started by: msb65
3 Replies
Login or Register to Ask a Question