Visit Our UNIX and Linux User Community


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


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting PHP: Search Multi-Dimensional(nested) array and export values of currenly worked on array.
# 1  
Old 12-06-2009
Question 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 [3] 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 below..

[1] => Array
(
[0] => dc=prvt,dc,dc=com
[1] => mldap.wst1.com:389
[2] => sldap1.wst1.com:389
[3] => OK <--- if this value is anything other then OK, $repstat .= echo " Slave server '$data2[1][2]' is not in sync with master server '$data2[1][2]'\n";
[4] => Last
[5] => update:
[6] => today
[7] => at
[8] => 6:16
[9] => AM
)

I would like to do the above process to all arrays listed below, basicly export this....
( $repstat .= echo " Slave server '$data2[1][2]' is not in sync with master server '$data2[1][2]'\n"; )
for all arrays who's key[3] value is anything other than OK, if they are all OK, then just do....
( $repstat = echo "ALL LDAP SERVER IN SYNC"; )

here is my code so far that just get the data into the nested arrays..
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);
?>


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]$
# 2  
Old 12-07-2009
Check if this helps

Code:
$flag = 1; # if flag is 1 then it means all are ok
$ok_msg = "ALL LDAP SERVER IN SYNC";
$not_ok_msg = '';

foreach ($data2 as $key => $arr){
        if ($arr[3] != "OK"){
                $flag = 0;
                $not_ok_msg .= "...."; # add the msg that needs to be printed
        }
}
($flag == 1) ?  print "$ok_msg" : print "$not_ok_msg";


Previous Thread | Next Thread
Test Your Knowledge in Computers #770
Difficulty: Medium
IBM POWER4 (2001) had off-chip L3 caches of 32 MB per processor, shared among several processors.
True or False?

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. UNIX for Advanced & Expert Users

Search and replace a array values in perl

Hi, i want to search and replace array values by using perl perl -pi -e "s/${d$i]}/${b$j]}" *.xml i am using while loop for the same. if i excute this,it shows "Substitution replacement not terminated at -e line 1.". please tell me what's wrong this line (1 Reply)
Discussion started by: arindam guha
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

Select multiple values from an Oracle database and assign it to two dimensional array

hi I have two tables in oracle DB and am using a joining query which will result in the output as follows. i need to assign it to a two dimensional array and use it for my further calculations. the way i tried is as follows. #!/bin/ksh export... (1 Reply)
Discussion started by: aemunathan
1 Replies

8. Shell Programming and Scripting

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... (2 Replies)
Discussion started by: zeekblack
2 Replies

9. Shell Programming and Scripting

2 dimensional array in unix

I am trying to implementing two dimensinal array in ksh script.Would you pls help me out. I have a large size of file, File contains looks like ID SID VLAUE1 VALUE2 TOTALVALUE 1 a1 01 02 03 1 b1 02 05 07 ... (2 Replies)
Discussion started by: pritish.sas
2 Replies

10. 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

Featured Tech Videos