PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!
Moderator: General Moderators
phear69
Forum Newbie
Posts: 5 Joined: Fri Jan 08, 2010 10:07 am
Post
by phear69 » Fri Jan 08, 2010 10:26 am
pickle | Please use [ code=php ], [ code=text ], etc tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read: Posting Code in the Forums to learn how to do it too.
I'm having trouble with this and I can't figure out why. One of my values in my multidimensional arrays is not changing when I assign it but only on one occasion.
----------------------------------------
Code: Select all
$m_array[$uid][0] = $m_array[$uid][0] + 1;
$temp = $m_array[$uid][1];
echo "<P>UID: $uid Arr Before: $temp ->";
$x = 10;
while($x > 0) {
foreach($p_array as $index => $value) {
$y = 10 - $x;
if($w_array[$y] == $value) {
$temp += $x;
echo "ADDING [$x]";
}
}
$x -= 1;
}
$m_array[$uid][1] = $temp;
if($m_array[$uid][1] != $temp) {
echo "WTF?!?!";
$m_array[$uid][1] = $temp;
}
echo "After: ($temp) {$m_array[$uid][1]}";
-----------------------------------------------
OUPUT:
UID: 1 Arr Before: 0 ->ADDING [10]ADDING [9]ADDING [8]ADDING [7]ADDING [6]ADDING [5]ADDING [4]ADDING [3]ADDING [2]ADDING [1]After: (55) 55
UID: 2
Arr Before: 0 ->ADDING [6]ADDING [3]ADDING [1]ADDING [1]WTF?!?!
After: (11) 1
UID: 2 Arr Before: 1 ->ADDING [7]After: (8) 8
UID: 3 Arr Before: 0 ->After: (0) 0
pickle | Please use [ code=php ], [ code=text ], etc tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read: Posting Code in the Forums to learn how to do it too.
manohoo
Forum Contributor
Posts: 201 Joined: Wed Dec 23, 2009 12:28 pm
Post
by manohoo » Fri Jan 08, 2010 11:15 am
Please post the contents of all arrays involved before you run the code you posted.
echo "<pre>";
var_dump($m_array);
var_dump($p_array);
etc...
phear69
Forum Newbie
Posts: 5 Joined: Fri Jan 08, 2010 10:07 am
Post
by phear69 » Fri Jan 08, 2010 12:22 pm
Code: Select all
$m_array[$uid][0] = $m_array[$uid][0] + 1;
echo "<pre>";
var_dump($m_array);
var_dump($p_array);
var_dump($w_array);
$temp = $m_array[$uid][1];
echo "<P>UID: $uid Arr Before: $temp ->";
$x = 10;
while($x > 0) {
foreach($p_array as $index => $value) {
$y = 10 - $x;
if($w_array[$y] == $value) {
$temp += $x;
echo "ADDING [$x]";
}
}
$x -= 1;
}
$m_array[$uid][1] = $temp;
if($m_array[$uid][1] != $temp) {
echo "WTF?!?!";
$m_array[$uid][1] = $temp;
}
echo "After: ($temp) {$m_array[$uid][1]}";
OUTPUTS:
Code: Select all
array(2) {
[0]=>
string(1) "1"
[1]=>
array(2) {
[0]=>
int(1)
[1]=>
int(0)
}
}
array(10) {
[0]=>
string(2) "10"
[1]=>
string(2) "17"
[2]=>
string(1) "7"
[3]=>
string(2) "20"
[4]=>
string(1) "2"
[5]=>
string(2) "21"
[6]=>
string(2) "23"
[7]=>
string(2) "16"
[8]=>
string(2) "14"
[9]=>
string(1) "1"
}
array(10) {
[0]=>
string(2) "10"
[1]=>
string(1) "7"
[2]=>
string(1) "2"
[3]=>
string(2) "23"
[4]=>
string(2) "14"
[5]=>
string(2) "17"
[6]=>
string(2) "20"
[7]=>
string(2) "21"
[8]=>
string(2) "16"
[9]=>
string(1) "1"
}
UID: 1 Arr Before: 0 ->ADDING [10]ADDING [9]ADDING [8]ADDING [7]ADDING [6]ADDING [5]ADDING [4]ADDING [3]ADDING [2]ADDING [1]After: (55) 55
[color=#FF0000]array(4) {
[0]=>
string(1) "1"
[1]=>
array(2) {
[0]=>
int(1)
[1]=>
int(55)
}
[2]=>
string(2) "10"
[3]=>
array(2) {
[0]=>
int(0)
[1]=>
int(0)
}
}
array(10) {
[0]=>
string(2) "18"
[1]=>
string(2) "21"
[2]=>
string(1) "1"
[3]=>
string(2) "28"
[4]=>
string(1) "3"
[5]=>
string(2) "44"
[6]=>
string(1) "1"
[7]=>
string(2) "14"
[8]=>
string(2) "34"
[9]=>
string(2) "36"
}
array(10) {
[0]=>
string(2) "10"
[1]=>
string(1) "7"
[2]=>
string(1) "2"
[3]=>
string(2) "23"
[4]=>
string(2) "14"
[5]=>
string(2) "17"
[6]=>
string(2) "20"
[7]=>
string(2) "21"
[8]=>
string(2) "16"
[9]=>
string(1) "1"
}
UID: 2 Arr Before: 0 ->ADDING [6]ADDING [3]ADDING [1]ADDING [1]WTF?!?!After: (11) 1
[/color]
array(4) {
[0]=>
string(1) "1"
[1]=>
array(2) {
[0]=>
int(1)
[1]=>
int(55)
}
[2]=>
string(2) "21"
[3]=>
array(2) {
[0]=>
int(0)
[1]=>
int(0)
}
}
array(10) {
[0]=>
string(1) "8"
[1]=>
string(2) "23"
[2]=>
string(2) "35"
[3]=>
string(2) "46"
[4]=>
string(1) "3"
[5]=>
string(2) "38"
[6]=>
string(2) "19"
[7]=>
string(2) "40"
[8]=>
string(2) "29"
[9]=>
string(2) "53"
}
array(10) {
[0]=>
string(2) "10"
[1]=>
string(1) "7"
[2]=>
string(1) "2"
[3]=>
string(2) "23"
[4]=>
string(2) "14"
[5]=>
string(2) "17"
[6]=>
string(2) "20"
[7]=>
string(2) "21"
[8]=>
string(2) "16"
[9]=>
string(1) "1"
}
UID: 2 Arr Before: 1 ->ADDING [7]After: (8) 8
array(4) {
[0]=>
string(1) "1"
[1]=>
array(2) {
[0]=>
int(1)
[1]=>
int(55)
}
[2]=>
string(2) "28"
[3]=>
array(2) {
[0]=>
int(1)
[1]=>
int(0)
}
}
array(10) {
[0]=>
string(2) "13"
[1]=>
string(2) "13"
[2]=>
string(2) "30"
[3]=>
string(2) "30"
[4]=>
string(1) "3"
[5]=>
string(1) "3"
[6]=>
string(2) "29"
[7]=>
string(2) "47"
[8]=>
string(2) "19"
[9]=>
string(2) "37"
}
array(10) {
[0]=>
string(2) "10"
[1]=>
string(1) "7"
[2]=>
string(1) "2"
[3]=>
string(2) "23"
[4]=>
string(2) "14"
[5]=>
string(2) "17"
[6]=>
string(2) "20"
[7]=>
string(2) "21"
[8]=>
string(2) "16"
[9]=>
string(1) "1"
}
UID: 3 Arr Before: 0 ->After: (0) 0
manohoo
Forum Contributor
Posts: 201 Joined: Wed Dec 23, 2009 12:28 pm
Post
by manohoo » Fri Jan 08, 2010 1:02 pm
One question.
$m_array has 2 elements: element 0 is string '1', element 1 is array(1,0), both of them integers
Is that the intent?
Also, what's the value of $uid?
Last edited by
manohoo on Fri Jan 08, 2010 1:05 pm, edited 1 time in total.
phear69
Forum Newbie
Posts: 5 Joined: Fri Jan 08, 2010 10:07 am
Post
by phear69 » Fri Jan 08, 2010 1:03 pm
I've found the issue.
Code: Select all
if(!(array_key_exists($uid,$m_array))){
$t_array = array($uid, array(0,0));
$m_array = array_merge($m_array,$t_array);
$m_array[$uid][0] = 0;
$m_array[$uid][1] = 0;
}
Code: Select all
$t_array = array($uid, array(0,0));
For some reason, that causes the issue.
Code: Select all
$t_array= array($uid => array(0,0));
That fixes the problem. Isn't it supposed to work with the comma?
phear69
Forum Newbie
Posts: 5 Joined: Fri Jan 08, 2010 10:07 am
Post
by phear69 » Fri Jan 08, 2010 1:06 pm
element 0 is the ID tag, element 1 is an array of two elements both counters
manohoo
Forum Contributor
Posts: 201 Joined: Wed Dec 23, 2009 12:28 pm
Post
by manohoo » Fri Jan 08, 2010 1:09 pm
I am glad you found out. It's easy to confuse associative/non-associative arrays.
phear69
Forum Newbie
Posts: 5 Joined: Fri Jan 08, 2010 10:07 am
Post
by phear69 » Fri Jan 08, 2010 1:14 pm
Thanks for taking a look.