2

I am receiving an error once this code runs. I have looked up possible solutions but everything seems to be formatted correctly.

$searched = 'searched';    
$count    = '59';
$prop     = Array();

$i = 0;
while ($i++ <= 4) {
    array_push($prop[$i] = Array(
         'text' => $searched,
         'href' => 'http://mysite.com/?search=' . str_replace(' ', '+', $searched)
    ));
}

array_push($prop['Total Searches'] = $count);

I receive this error 5 times for the while loop, and 1 time for the array_push under the while loop.

Warning: Wrong parameter count for array_push()

The code works correctly! but it still calls out the error. So should I just suppress the error?

3
  • I altered your formatting a bit to make it vaguely legible. Next time, please go ahead and do that yourself! Commented May 23, 2011 at 21:51
  • 3
    -1 for considering "just suppress[ing] the error". +1 for realising that it might not be a good idea, and asking about it. :) Commented May 23, 2011 at 21:52
  • Thank you, I couldn't figure out how the back ticks worked. Im going to create an account here since I received an answer so swiftly Commented May 23, 2011 at 22:00

3 Answers 3

6

Change:

array_push($prop['Total Searches'] = $count);

to:

$prop['Total Searches'] = $count;

etc.

You only use array_push to push a value on to the end of a list-style array. This is not relevant here, as you're just setting a new key/value pair.

Sign up to request clarification or add additional context in comments.

3 Comments

Thank you! I have been starring down this code for almost an hour.
You're welcome. Please click the checkmark outline next to this answer if you are happy with it. That will indicate the question is answered and help other people find the favorite answer. Welcome to SO!
Done! I tried clicking it as soon as i ran the code, but I had to wait 11 mins :/ Thanks again
2

You're mixing approaches.

Read about array_push, which doesn't do what you think it does.

array_push($array, $val) is like $array[] = $val.

You want just:

$prop[$i] = Array(
     'text' => $searched,
     'href' => 'http://mysite.com/?search=' . str_replace(' ', '+', $searched)
));

and

$prop['Total Searches'] = $count;

3 Comments

+1 - dkamins has it right as well, but this is a better answer in my opinion
Thanks, from what dkamins said i was able to remove the array_push from the while loop as you described.
@Eric: It's more thorough, but it's certainly not one of my most comprehensible answers. :)
0

this will do your job,

$searched = 'searched';    
$count    = '59';
$prop     = Array();
$search_terms = Array();

$i = 0;
while ($i <= 4) 
{
   $search_terms['text'] = $searched;
   $searched = str_replace(' ', '+', $searched);
   $search_terms['href'] = 'http://mysite.com/?search='.$searched;
   array_push($prop, $search_terms);
   $i++;
}

$prop['Total Searches'] = $count;

and check http_build_query, thats what i am using.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.