By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,200 Members | 1,593 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,200 IT Pros & Developers. It's quick & easy.

array structure as with array_reverse preserve_keys

P: n/a
I have an array defined as follows:

$scores[2] = 19;
$scores[4] = 25;
$scores[2] = 23;
$scores[4] = 25;

.... where the key is the team # and the value is the points.

I am outputting the key/values as follows:

foreach ($scores as $team => $points) {
echo "Team: $team, Points: $points, Difference: " . ($scores[0] -
$scores[1]) . "<br>";
$scores = array_reverse($scores, false);
}

Curent output (before array_reverse):

Game 1
Team: 2, Points: 19, Difference: 0
Team: 4, Points: 25, Difference: 6

Game 2
Team: 2, Points: 23, Difference: 0
Team: 4, Points: 25, Difference: 2
A problem occurs when calculating the point "Difference". The first pass of
the foreach loop (above) is incorrect, but the second pass is correct
(below.) This is due from the use of the function array_reverse(). By
setting the preserve_keys to false, the function changes the structure of
the array.

Desired output (after array_reverse):

Game 1
Team: 2, Points: 19, Difference: -6
Team: 4, Points: 25, Difference: 6

Game 2
Team: 2, Points: 23, Difference: -2
Team: 4, Points: 25, Difference: 2
Question: how can the above array be structured like this from the start?
Apr 18 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Bosconian wrote:
I have an array defined as follows:

$scores[2] = 19;
$scores[4] = 25;
$scores[2] = 23;
$scores[4] = 25;

... where the key is the team # and the value is the points.

I am outputting the key/values as follows:

foreach ($scores as $team => $points) {
echo "Team: $team, Points: $points, Difference: " . ($scores[0] -
$scores[1]) . "<br>";
$scores = array_reverse($scores, false);
}

Curent output (before array_reverse):

Game 1
Team: 2, Points: 19, Difference: 0
Team: 4, Points: 25, Difference: 6

Game 2
Team: 2, Points: 23, Difference: 0
Team: 4, Points: 25, Difference: 2
A problem occurs when calculating the point "Difference". The first pass of
the foreach loop (above) is incorrect, but the second pass is correct
(below.) This is due from the use of the function array_reverse(). By
setting the preserve_keys to false, the function changes the structure of
the array.

Desired output (after array_reverse):

Game 1
Team: 2, Points: 19, Difference: -6
Team: 4, Points: 25, Difference: 6

Game 2
Team: 2, Points: 23, Difference: -2
Team: 4, Points: 25, Difference: 2
Question: how can the above array be structured like this from the start?


Well, first of all:

$scores[2] = 19;
$scores[4] = 25;
$scores[2] = 23;
$scores[4] = 25;

doesn't work. You have scores[2] contain both 19 and 23, which you can't do.

Secondly, the line:

echo "Team: $team, Points: $points, Difference: " . ($scores[0] -
$scores[1]) . "<br>";

Would always print the difference between $scores[0] and $scores[1] - that is, -6.

So - what's your real code look like?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================
Apr 18 '06 #2

P: n/a
"Jerry Stuckle" <js*******@attglobal.net> wrote in message
news:4_********************@comcast.com...
Bosconian wrote:
I have an array defined as follows:

$scores[2] = 19;
$scores[4] = 25;
$scores[2] = 23;
$scores[4] = 25;

... where the key is the team # and the value is the points.

I am outputting the key/values as follows:

foreach ($scores as $team => $points) {
echo "Team: $team, Points: $points, Difference: " . ($scores[0] -
$scores[1]) . "<br>";
$scores = array_reverse($scores, false);
}

Curent output (before array_reverse):

Game 1
Team: 2, Points: 19, Difference: 0
Team: 4, Points: 25, Difference: 6

Game 2
Team: 2, Points: 23, Difference: 0
Team: 4, Points: 25, Difference: 2
A problem occurs when calculating the point "Difference". The first pass of the foreach loop (above) is incorrect, but the second pass is correct
(below.) This is due from the use of the function array_reverse(). By
setting the preserve_keys to false, the function changes the structure of the array.

Desired output (after array_reverse):

Game 1
Team: 2, Points: 19, Difference: -6
Team: 4, Points: 25, Difference: 6

Game 2
Team: 2, Points: 23, Difference: -2
Team: 4, Points: 25, Difference: 2
Question: how can the above array be structured like this from the start?

Well, first of all:

$scores[2] = 19;
$scores[4] = 25;
$scores[2] = 23;
$scores[4] = 25;

doesn't work. You have scores[2] contain both 19 and 23, which you can't

do.
Secondly, the line:

echo "Team: $team, Points: $points, Difference: " . ($scores[0] -
$scores[1]) . "<br>";

Would always print the difference between $scores[0] and $scores[1] - that is, -6.
So - what's your real code look like?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
js*******@attglobal.net
==================


Indeed, $scores[0] and $scores[1] will equal -6 once the elements are
properly defined, which was the thrust of my dilemma.

The above example was meant to illustrate the values were being pushed. My
bad.

So

$scores[2][] = 19;
$scores[4][] = 25;
$scores[2][] = 23;
$scores[4][] = 25;

resulting in

$scores[2][0] = 19;
$scores[4][0] = 25;
$scores[2][1] = 23;
$scores[4][1] = 25;

ANYWAY, I managed to get everything sorted out once my keys and values were
properly defined.
Apr 18 '06 #3

P: n/a
I'm not sure this is what your looking for but here is what I came up
with:

<?php
$game[1]= "Game 1";
$game[2]= "Game 2";

$scores[1]['2'] = 19;// Game One Team 2
$scores[1]['4'] = 25;// Game One Team 4

// This could also be written as: $scores[0] array(2 => 19, 4 => 25);

$scores[2]['2'] = 23;// Game Two Team 2
$scores[2]['4'] = 25;// Game Two Team 4

// This is a two dimentional array where the primary key is the game
number
// and the second keys are the team # and the value is the points.

//#######################
// Output
//#######################

// walk through each game
foreach ($game as $Key => $Description){
echo "<br/>".$Description.":<br/>";

// turn the $scores[GameNumber] from an associated to a numerical
array
// (because we won't always know what the team number is) and
put
// the values into $Score1 and $Score2.
list ($Score1,$Score2) = array_values($scores[$Key]);

// Calculate the difference
$Diff = abs($Score1-$Score2);

// walk through each score for the current game
foreach ($scores[$Key] as $team => $points) {

// show output for each team
echo "Team: ".$team.", Points: ".$points.", Difference:
".$Diff."<br>";
}

}
?>
-----------------------
Good Luck!

Apr 18 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.