![]() |
Problems with in_array() in a callback function
Hey there!
1st of all, this is my first thread in this section... I hope its the right one since I dont know if it really is an beginners problem? but I assume it is one :) here we go: I am trying to filter a array thats full of users, kicking out entrys that dont have a matching user_id so I only work with "buddys" out of a buddylist! im foreach'ing the buddylist array and putting it into a new array because the current buddylist array has another array inside.. I only want the user id's! then im calling array_filter(), passing it the user table and a callback function that has to check with in_array if the current user's ID is inside of the buddylist array and then removing/keeping the entry depending on the result... soooo... the problem now is that if I check for any user Id with in_array() it works and finds the id. but if I use it inside of the callback function of array_filter() it tells me the second argument is a wrong datatype ???? heres the working "test" code without array_filter() Code:
$tempArr = array();Code:
$this->buddyList = $this->getUsersBuddyList($_GET['userId']);Code:
Warnung: in_array() [function.in-array]: Wrong datatype for second argument in /www/htdocs/xxxxxxxxx/XXXX.php (Line 316)this code is all inside the constructor of an object ($engine) I created. I was using $this->buddyList first but replaced it with $engine->buddyList because I got this error Code:
Fatal error: Using $this when not in object context in /xxxxxxxx/XXXXXXX.php on line 316I appreciate any help on this :) |
Normally I would tell you to global $engine and leave it at that, but I think we're only getting a chunk of code from the greater whole here; as suggested by $this I would presume that this is taken from a larger class that you are writing?
php Code:
The gist of the idea here is that function cmp_ptl_friends() should be a method of your class, and you can call it (other methods from the same class) from array_filter() using the syntax shown above. Outside of that, if these were code snippets from a procedural script, your problem would have been the fact that cmp_ptl_friends() had no idea who or what $engine was. Since $engine was not created inside the function, nor was it passed as an argument, it doesn't yet exist in the scope of the function. You would have had to either pass it in as an argument or use the global keyword to bring it in from the global scope. |
Quote:
I didnt know that I could use "array($this,'functionName')" as the callback paramenter / I didnt know at all how to call a function of a class as the callback method...!!! I should have asked this in the first place I guess haha... I will try this out soon, but it already seems you really know what you are talking about and it WILL WORK! :D |
Sorry for the double-posting.... But I have to say IT WORKS !!!! :)
Big thx for the help with my first problem thread on this forum ;) |
| All times are GMT. The time now is 05:48 PM. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0