Jump to content

Recommended Posts

Posted

Hi guys!

 

How can I insert and array with string index or string key. Like for example

 

<?php

 

$example['breakfast'] = 'ham and egg';

$example['lunch'] = 'steak';

$example['snack'] = 'fish and chips';

 

print_r ($example);

 

?>

 

this outputs:

 

Array ( [breakfast] => ham and egg [lunch] => steak [snack] => fish and chips )

 

 

If I wanted to use array_push() or array_unshift(), HOW can I insert an item in the array "$example" that has a string index or string key of ['dinner']. Something like this:

 

<?php

 

$example['breakfast'] = 'ham and egg';

$example['lunch'] = 'steak';

$example['snack'] = 'fish and chips';

 

array_push($example['dinner'] = 'pizza');

print_r ($example);

 

?>

 

It generates the output :

 

Warning: array_push() expects at least 2 parameters, 1 given in C:\wamp\www\SMS 2.0\sample.php on line 16

Array ( [breakfast] => ham and egg [lunch] => steak [snack] => fish and chips [dinner] => pizza )

 

But you see the dinner was inserted..but how do I remove the error.

Posted (edited)

Warning: array_push() expects at least 2 parameters, 1 given in C:\wamp\www\SMS 2.0\sample.php on line 16

Array ( [breakfast] => ham and egg [lunch] => steak [snack] => fish and chips [dinner] => pizza )

 

But you see the dinner was inserted..but how do I remove the error.

 

Just learning myself, but if the warning is asking for two parameters, maybe by just adding a comma after $example will work. eg. [array_push($example, ['dinner'] = 'pizza');].

 

If that doesn't work couldn't you just use $example['dinner'] = 'pizza';

Edited by dms
Posted

When you have an error like this, the first thing you need to do is check the PHP manual for that particular function:

http://us.php.net/array_push. If you still can't get it to work, then a google search for the issue usually works (in this case, I looked up "array_push php associative array").

 

I was able to get your last example to work using PHP4... but it generates an error that I can't seem to fix when I switch to PHP5. The array_push() function requires two parameters -- the array, and the value. In PHP5, it looks like you can't input "$example['dinner']" as the array, because that refers to a specific key, not the entire array.

 

Based on this (http://devzone.zend.com/article/635 -- Under the "Push and Pull" section) it looks like you can't use array_push() with associative arrays. "The array_push() and array_unshift() functions don't work with associative arrays; to add elements to these arrays, it's better to use the $arr[$key] = $value notation to add new values to the array." (this is also faster than calling a function just to add one value to an array.)

 

So, to add a new value to an associative array, just use:

$example['dinner'] = 'pizza';

Posted

So we can insert additional items in an assoc. array in the end of the array but not in the beginning of it.

As far as I can tell, yes.

 

I don't see how "beginning" or "end" of an associative array make any difference though. It only makes a difference when you print out the array using print_r, but I can't see you doing that often in a project that is going to be visible to a general audience. I can understand if you are relying on the order of an array (like a non-associative array $array[1], $array[2] etc) but that's the whole point of an associative array -- order isn't important, and you will still find all of the data easily because of the key you assigned each value in the array.

Posted

Well, I was also thinking the same way..but I wasn't so sure if there will be a time that I need to insert an item in the beg/end of an array..LOL..and now you've said it, I got the point now..thanks a lot..great help! Have a good day. :cool:

Posted

There may be absolutely no use for this, but if you ever do need to insert an item at the beg/end of an array; you could give the key a name with a low sort value, such as... ['1_dinner'] or a high sort value... ['zzz_dinner'], and then use the ksort() along with array_flip(). The only problem I see is that if you have different keys with the same value, you will lose all but the last key/value pair.

e.g.

<?php

$example['breakfast'] = 'ham and egg';

$example['lunch'] = 'steak';

$example['snack'] = 'fish and chips';

 

$example['1_dinner'] = 'pizza';

 

ksort($example);

foreach ($example as $key => $val) {

echo "$key = $val\n";

}

 

$example = array_flip($example);

$example['pizza'] = 'dinner';

$example = array_flip($example);

print_r($example);

?>

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

Loading...
×
×
  • Create New...