Page 1 of 1
Multidimensional array problem
Posted: Fri Jan 08, 2010 10:26 am
by phear69
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.
Re: Multidimensional array problem
Posted: Fri Jan 08, 2010 11:15 am
by manohoo
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...
Re: Multidimensional array problem
Posted: Fri Jan 08, 2010 12:22 pm
by phear69
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
Re: Multidimensional array problem
Posted: Fri Jan 08, 2010 1:02 pm
by manohoo
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?
Re: Multidimensional array problem
Posted: Fri Jan 08, 2010 1:03 pm
by phear69
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?
Re: Multidimensional array problem
Posted: Fri Jan 08, 2010 1:06 pm
by phear69
element 0 is the ID tag, element 1 is an array of two elements both counters
Re: Multidimensional array problem
Posted: Fri Jan 08, 2010 1:09 pm
by manohoo
I am glad you found out. It's easy to confuse associative/non-associative arrays.
Re: Multidimensional array problem
Posted: Fri Jan 08, 2010 1:14 pm
by phear69
Thanks for taking a look.