We loop through the elements of these two arrays:
The first time a value is seen, its value in the hash union is 0, so it evaluates to false. The second part of the expression $union{$e}++ && $isect{$e}++, the post-increment assignment of the hash isect is not evaluated:
In the first iteration we have:
1. $e gets the value of 1.
2. $union{ $e }++ evaluates to false, $union{ $e } becomes 1 after the expression is evaluated (because it's post-incremented, ++$union{ $e } is the opposite, it will first assign the value of 1 to the variable and after that, the expression will get evaluated, using the new value).
3. $isect{ $e }++ is skipped, because the first part of the expression is false.
Second iteration:
1. $e gets the value of 3 (the second element in the first array).
2 to 3 are the same as in the first case.
...
This way, we build the union of the two sets.
8th iteration:
1. $e gets the value of 3 (the second element in the second array).
2. $union{ $e }++ this time evaluates to true, it's current value is 1, the next one will be 2.
3. $isect{ $e }++ gets evaluated this time, because the first evaluates to true.
So this hash will contain only the values previously seen (those present in the first array (assuming each array contains only unique values).
So now we are able to build the intersection of those two sets.
I have a little problem. To keep a configuration simple, I've exceeded my perl knowledge. :-) I've worked with multi-dimentional arrays before, but this one has me beat:
@info = (
{
'defval' => 'abc'
'stats' = (
{ 'name' => 'a', },
{ 'name' =>... (1 Reply)
Hi,i have a code fragment below.
%tag = (); #line 1
$tag{'info'} = $datastring; #line 2
$resp = $ua->request( #$ua is a user agent
POST 'http://10.2.3.0' ,
Content_Type => application/x-www-form-urlencoded
Content => #line 3 I am not sure of what the code... (3 Replies)
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)
Hi all experts,
May I know how to read a csv file and read the content in a hash in PERL?
Currently, I hard-coded and defined it in my code. I wanna know how to make up the %mymap hash thru reading the cfg.txt
====
csv file(cfg.txt):
888,444
999,333
===
#!/usr/bin/perl
my... (1 Reply)
Hi ,
I have an input.txt file that i read
node: id= c1, class=nb, cx=100, cy=100, r=10
node: id=c2, class=b, cx=150, cy=130, r=10
node: id=c3, class=nb, cx=50, cy=80, r=10
node: id=c4, class=nb, cx=120, cy=200, r=10
i split over , and = to create a global array and then passed it to a... (6 Replies)
Hi guys
I have this part of a perl script that returns and odd error
if ($args{software}) {
print " @DISTFILE_GROUPS $output->{distfile_groups}->{ get_rdist_groups}\n";
and the error is
Can't coerce array into hash at
i've never seed this error before, any ideas
thanks... (0 Replies)
How do I get the unique hashes from an array of hashes?
@ar1 = ( {a=>1,b=>2}, {c=>3,d=>4},{a=>1,b=>2});I need :
@ar2 = ( {a=>1,b=>2}, {c=>3,d=>4});Thanks. (2 Replies)
Sorry for the “word salad” subject, but I wanted to cast a wide net for help.
I've created an IP (Internet Protocol) server which serves HTTP, SMTP, and FTP requests.
As you probably know, they all require creating a socket, listening on it, accepting connections, and then having a short... (3 Replies)
Discussion started by: John S.
3 Replies
LEARN ABOUT PHP
each
EACH(3) 1 EACH(3)each - Return the current key and value pair from an array and advance the array cursorSYNOPSIS
array each (array &$array)
DESCRIPTION
Return the current key and value pair from an array and advance the array cursor.
After each(3) has executed, the array cursor will be left on the next element of the array, or past the last element if it hits the end of
the array. You have to use reset(3) if you want to traverse the array again using each.
PARAMETERS
o $array
- The input array.
RETURN VALUES
Returns the current key and value pair from the array $array. This pair is returned in a four-element array, with the keys 0, 1, key, and
value. Elements 0 and key contain the key name of the array element, and 1 and value contain the data.
If the internal pointer for the array points past the end of the array contents, each(3) returns FALSE.
EXAMPLES
Example #1
each(3) examples
<?php
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);
?>
$bar now contains the following key/value pairs:
Array
(
[1] => bob
[value] => bob
[0] => 0
[key] => 0
)
<?php
$foo = array("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each($foo);
print_r($bar);
?>
$bar now contains the following key/value pairs:
Array
(
[1] => Bob
[value] => Bob
[0] => Robert
[key] => Robert
)
each(3) is typically used in conjunction with list(3) to traverse an array, here's an example:
Example #2
Traversing an array with each(3)
<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
reset($fruit);
while (list($key, $val) = each($fruit)) {
echo "$key => $val
";
}
?>
The above example will output:
a => apple
b => banana
c => cranberry
Caution
Because assigning an array to another variable resets the original array's pointer, our example above would cause an endless loop
had we assigned $fruit to another variable inside the loop.
Warning
each(3) will also accept objects, but may return unexpected results. It's therefore not recommended to iterate though object proper-
ties with each(3).
SEE ALSO key(3), list(3), current(3), reset(3), next(3), prev(3), foreach, Object Iteration.
PHP Documentation Group EACH(3)