09-07-2006
Hopefully the section of the codes below will help me to explain what i am trying to do
--------------------------------------------------------------------------
typeset -i count=0
set -A array1 ab bx cd ef
# "ab bx cd ef" are the list of servers
while [ count -le ${#array1[@]} ] && [ count -ge 0 ]
do
# testfunction will return
# 1 = pass
# 0 = fail
test=$(testfunction array1[count])
if [[ $test -eq 1 ]]; then
echo "${array1[count]}_server"
fi
--------------------------------------------------------------------------
Above are the section of codes that I am having problem, when I ran this scripts, it will return the server name that I wanted along with the server name that I don't want
Output:
ab_server
bx
cd_server
ef_server
So are there some way to pop "bx" from the server list? I mean after it goes through the (testfunction). Thank you.
10 More Discussions You Might Find Interesting
1. Filesystems, Disks and Memory
We just purchased a MOD30 disk array strage system.
We have 15 drives and 2 hot spares.
We're running a database app with 8 data sets.
I'm trying to get the best i/o speed out of my disk configuration.
Right now I have 3 raid5 arrays setup. This seems to offer the same performance as having the... (1 Reply)
Discussion started by: ncmurf00
1 Replies
2. UNIX for Dummies Questions & Answers
When setting a variable, how would I go about making each result a new line?
A very simple example would be:
theFolders=`(ls -l /)`
echo $theFolders
This gives me all the folders as one variable and I need to be able to use each as its own variable. I'm sure I have to make this into an... (2 Replies)
Discussion started by: TheCrunge
2 Replies
3. Shell Programming and Scripting
suppose my @{$data1{$callid}}; cotains
one two three
three five six
one two three
of random patterns but each item is separated by white space or tab,
Below code extract and get rid of the whitespace perfectly so that it shows now like this
onetwothree
threefivesix... (2 Replies)
Discussion started by: hankooknara
2 Replies
4. Shell Programming and Scripting
I need to implement the following logic and need some expert help from UNIX community.
These are the steps in my Shell script.
1. Analyze a file.
2. Extract all the ID's in that file.
3. Use the ID's from #2 to run another filter on the file.
I've implemented # 1 and 2 using... (3 Replies)
Discussion started by: katwala
3 Replies
5. Shell Programming and Scripting
Greetings,
DISCLAIMER: My shell scripting is rusty so my question may be borderline stupid. You've been warned.
I need to create a script that a) lists the content of zip files in a directory and b) sends out an `exception` report. My ZIP files contain a control file (for load check). I want... (2 Replies)
Discussion started by: alan
2 Replies
6. Programming
Im new to C programming and am having trouble understanding the output of this code
int array={4,5,8,9,8,1,0,1,9,3};
int *array_ptr;
int main()
{
array_ptr=array;
while((*array_ptr) != 0)
array_ptr++;;
printf("%d\n", array_ptr - array);
return(0);
}
the output is 6 but I... (2 Replies)
Discussion started by: sacat
2 Replies
7. UNIX for Dummies Questions & Answers
I have attempted to create an array consisting of two items: #0 and #1.
I am able to print the two items corrctly:
arr=(hello "my name is")
echo ${arr}
hello
echo ${arr}
my name is
However, when I try to run a for loop to print both objects:
for i in ${arr
}
do
echo $i
done
I get:... (2 Replies)
Discussion started by: locoroco
2 Replies
8. Shell Programming and Scripting
Hi,
I am trying to do something similar to the for loop example from KSH For Loop Array: Iterate Through Array Values
$: cat y.ksh
#!/bin/ksh
# set array called nameservers
set -A nameservers 192.168.1.1 192.168.1.5 202.54.1.5
# print all name servers
for i in ${nameservers}
do
... (3 Replies)
Discussion started by: newbie_01
3 Replies
9. Shell Programming and Scripting
Inside a zsh function, I create a local array with local -a arrayname and a local associative array with local -A arrayname.
I also can create an array using set, like this:
set -A arrayname value1 value2 value3In this form, I can not explicitly declare that an array is associative or... (2 Replies)
Discussion started by: rovf
2 Replies
10. Shell Programming and Scripting
I am trying to assign indexes to an associative array in a for loop but I have to use an eval command to make it work, this doesn't seem correct I don't have to do this with regular arrays
For example, the following assignment fails without the eval command:
#! /bin/bash
read -d "\0" -a... (19 Replies)
Discussion started by: Riker1204
19 Replies
LEARN ABOUT PHP
array_udiff
ARRAY_UDIFF(3) 1 ARRAY_UDIFF(3)
array_udiff - Computes the difference of arrays by using a callback function for data comparison
SYNOPSIS
array array_udiff (array $array1, array $array2, [array $...], callable $value_compare_func)
DESCRIPTION
Computes the difference of arrays by using a callback function for data comparison. This is unlike array_diff(3) which uses an internal
function for comparing the data.
PARAMETERS
o $array1
- The first array.
o $array2
- The second array.
o $value_compare_func
- The callback comparison function. The comparison function must return an integer less than, equal to, or greater than zero if
the first argument is considered to be respectively less than, equal to, or greater than the second.
int callback (mixed $a, mixed $b)
RETURN VALUES
Returns an array containing all the values of $array1 that are not present in any of the other arguments.
EXAMPLES
Example #1
array_udiff(3) example using stdClass Objects
<?php
// Arrays to compare
$array1 = array(new stdclass, new stdclass,
new stdclass, new stdclass,
);
$array2 = array(
new stdclass, new stdclass,
);
// Set some properties for each object
$array1[0]->width = 11; $array1[0]->height = 3;
$array1[1]->width = 7; $array1[1]->height = 1;
$array1[2]->width = 2; $array1[2]->height = 9;
$array1[3]->width = 5; $array1[3]->height = 7;
$array2[0]->width = 7; $array2[0]->height = 5;
$array2[1]->width = 9; $array2[1]->height = 2;
function compare_by_area($a, $b) {
$areaA = $a->width * $a->height;
$areaB = $b->width * $b->height;
if ($areaA < $areaB) {
return -1;
} elseif ($areaA > $areaB) {
return 1;
} else {
return 0;
}
}
print_r(array_udiff($array1, $array2, 'compare_by_area'));
?>
The above example will output:
Array
(
[0] => stdClass Object
(
[width] => 11
[height] => 3
)
[1] => stdClass Object
(
[width] => 7
[height] => 1
)
)
Example #2
array_udiff(3) example using DateTime Objects
<?php
class MyCalendar {
public $free = array();
public $booked = array();
public function __construct($week = 'now') {
$start = new DateTime($week);
$start->modify('Monday this week midnight');
$end = clone $start;
$end->modify('Friday this week midnight');
$interval = new DateInterval('P1D');
foreach (new DatePeriod($start, $interval, $end) as $freeTime) {
$this->free[] = $freeTime;
}
}
public function bookAppointment(DateTime $date, $note) {
$this->booked[] = array('date' => $date->modify('midnight'), 'note' => $note);
}
public function checkAvailability() {
return array_udiff($this->free, $this->booked, array($this, 'customCompare'));
}
public function customCompare($free, $booked) {
if (is_array($free)) $a = $free['date'];
else $a = $free;
if (is_array($booked)) $b = $booked['date'];
else $b = $booked;
if ($a == $b) {
return 0;
} elseif ($a > $b) {
return 1;
} else {
return -1;
}
}
}
// Create a calendar for weekly appointments
$myCalendar = new MyCalendar;
// Book some appointments for this week
$myCalendar->bookAppointment(new DateTime('Monday this week'), "Cleaning GoogleGuy's apartment.");
$myCalendar->bookAppointment(new DateTime('Wednesday this week'), "Going on a snowboarding trip.");
$myCalendar->bookAppointment(new DateTime('Friday this week'), "Fixing buggy code.");
// Check availability of days by comparing $booked dates against $free dates
echo "I'm available on the following days this week...
";
foreach ($myCalendar->checkAvailability() as $free) {
echo $free->format('l'), "
";
}
echo "
";
echo "I'm busy on the following days this week...
";
foreach ($myCalendar->booked as $booked) {
echo $booked['date']->format('l'), ": ", $booked['note'], "
";
}
?>
The above example will output:
I'm available on the following days this week...
Tuesday
Thursday
I'm busy on the following days this week...
Monday: Cleaning GoogleGuy's apartment.
Wednesday: Going on a snowboarding trip.
Friday: Fixing buggy code.
NOTES
Note
Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by
using array_udiff($array1[0], $array2[0], "data_compare_func");.
SEE ALSO
array_diff(3), array_diff_assoc(3), array_diff_uassoc(3), array_udiff_assoc(3), array_udiff_uassoc(3), array_intersect(3), array_inter-
sect_assoc(3), array_uintersect(3), array_uintersect_assoc(3), array_uintersect_uassoc(3).
PHP Documentation Group ARRAY_UDIFF(3)