Not sure why this is happening, but my script doesn't seem to be able to return true for in_array more than once...
$saved = '15,22';
$set = explode(",",$saved); //results in Array ( [0] => 15 [1] => 22 )
Then, I query the database:
$result = pg_query("SELECT did,vid,iid,value FROM demographicValues");
if(pg_num_rows($result) > 0) {
while($r = pg_fetch_array($result)) {
$demo[$r['did']][$r['vid']]['value'] = $r['value'];
if(in_array($r['vid'], $set)) {
$demo[$r['did']][$r['vid']]['status'] = 1;
}
}
} else...
If I print_r $demo, you can see that the vid 22 is in there, so, I'm not understanding why the status isn't being set accordingly?
Array
(
[Mant] => Array
(
[15] => Array
(
[value] => Proper
[checked] => 1
)
[16] => Array
(
[value] => Parish
)
[Comp] => Array
(
[22] => Array
(
开发者_StackOverflow中文版 [value] => 65 - 70
)
[23] => Array
(
[value] => 35 - 50
)
)
)
Note that I also tried array_intersect and array_flip on $set, then isset...
By default in_array
also checks the types.
See the parameter strict
at http://php.net/manual/en/function.in-array.php.
In your code $r['vid']
is an integer and the exploded string is still a string. So just use the same types or use:
if(in_array($r['vid'], $set, false)) ...
精彩评论