1

I have an array that I need to add some key/value pairs too but I'm having trouble with it. Here's an example of my array:

Array
(
    [0] => Array
        (
            [id] => 108
            [pagetitle] => Title
            [description] => 
            [parent] => 35
            [alias] => url-alias
            [menutitle] => 
        )
)

I'm trying to insert a new key called "country" along with it's value but I can't figure out what I'm doing wrong.

    foreach($all_items as $item) {

    $country = $modx->getTemplateVarOutput(array("country"), $item['id'], $published=1);
    $item['country'] = $country['country'];
}

I've verified that $country['country'] does contain what I need it to...I just can't seem to add it to the array.

4

3 回答 3

9

You need to pass array element by reference if you want to modify it.

foreach($all_items as &$item) {
    ...
于 2012-05-31T16:44:05.633 回答
2

That is because the $item array is actually only a copy of the the element within $all_items.

To achieve what you want you could do it like this:

foreach($all_items as &$item) {
   $country = $modx->getTemplateVarOutput(array("country"), $item['id'], $published=1);
   $item['country'] = $country['country'];
}

Also see docs for foreach there you'll find exactly that.

于 2012-05-31T16:44:59.277 回答
1

This should do what you are asking:

foreach($all_items as $k=>$v) {
    $country = $modx->getTemplateVarOutput(array("country"), $all_items[$k]['id'], $published=1);
    $all_items[$k]['country'] = $country['country'];
}
于 2012-05-31T16:44:50.423 回答