Jump to content

Unsupported operand types


tomfmason

Recommended Posts

I have a class the records hits and retrieves information about users and guests online..

Well I get that error when trying to get the percentage of users/ guests online..

Here is how I call the function with in the class.

[code=php:0]
$users = new users;
$users->recordHit(session_id(), $_SERVER['REMOTE_ADDR'], $username, $_SERVER['HTTP_REFERER']);
$new_today = $users->userJoinDate('today');
$new_yesterday = $users->userJoinDate('yesterday');
$total_users = $users->totalUsers();
$new_users = $users->lastMembers();
$new_user_count = count($new_users);
$users_online = $users->usersOnline();
$count_users_online = count($users_online);
$guests_online = $users->guestsOnline();
$total_online = ($count_users_online + $guests_online);
$guest_percent = $users->percent($users_online, $total_online);
$user_percent = $users->percent($count_users_online, $total_online);
[/code]

I get the following error

Fatal error: Unsupported operand types in user.inc.php on line 83

Here is the function in question.

[code=php:0]
function percent($a, $b) {
    $percent = round(($a / $b) * 100);//line 83
    return $percent;
}
[/code]

Any suggestions as to why this is happening?

Thank you,
Tom
Link to comment
Share on other sites

chances are either $a or $b is not numeric, and you can't divide or multiply values that are not numeric (though there are some exceptions)
So make sure your function receives numeric values for $a and $b.
For example, the following code will give you the same error:

$a = 8;
$b = array('ping','pong');
echo($a/$b);

OR

$a = 'ping';
$b = getdate();
echo($a/$b);
Link to comment
Share on other sites

hmm,
Are you sure they are numeric?
If you can replicate the bug, the best way to find out what is happening is to print out $a and $b to truly tell what they are:
[code]
function percent($a, $b) {
    var_dump($a);
    var_dump($b);
    $percent = round(($a / $b) * 100);//line 83
    return $percent;
}
echo(percent(3,2));[/code]
This would output:
[code]int(3) int(2) 150[/code]
Link to comment
Share on other sites

LOL.. No you were right.. It was not numeric..

I had

[code=php:0]
$guest_percent = $users->percent($users_online, $total_online);
[/code]

when it should have been

[code=php:0]
$guest_percent = $users->percent($guests_online, $total_online);
[/code]

$users_online is an array of usernames.

LOL thanks,
Tom
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.