I have an array of people that is registered as online in a html file. I am using this so that each can have an image assigned to them. But when checking to see if using name is already in use the in_array function return false and allow the script to continue.
$user = "< img src='default.jpg' />John";
$explode = array("<img src='tress.jpg' />John");
if(in_array($user, $explode))
{
//show login script if user exists
}
else
{
//continue to script
}
Now the reason this is not working is because the john in the array is not identical to the john in $user. Is there anyway of checking that the name exists in the array? When responding please explain.
Instead of asking, “How do I solve this problem?”, you need to start with, “Why am I having this problem?”
Is
< img src='default.jpg' />Johna user name? Why are you using it as one? I’m guessing there’s some clever thought behind this like “Well, I always display a user’s image with their name, so I’ll just make the image part of their name. This is going to cause far more problems than it solves. This comes back to a big concept in computer science called separation of concerns. An image is not logically a part of a user name, so don’t store it as one. If you always display them together, you can use functions to display a user’s information in a standard way without making the image part of the user name.So first off, remove the image from the name. There are several ways to store this separately.
I would suggest using a class:
You can use an “array” if you want to be a little lazier, but I don’t recommend it in the general case, since you lose the cool features of classes (like those functions):
In your database (if you’re using one), make them separate columns and then use one of the above data structures.
Now that you have this, it’s easy to see if a user name is in a given list using a foreach loop:
If you’re new to PHP, the normal
forloop may be easier to understand:Let me know if any of this doesn’t run, I don’t write PHP very often anymore..