0

The goal

Replace this:

(
    [0] => 'Header'
    [1] => 'Body'
)

For this:

['Header'] => Array
    (
        [0] => Hello!
    )

['Body'] => Array
    (
        [0] => This is the body
    )

The problem

I'm missing the logic and I think this is happening because I doesn't know the syntax.

The scenario

Follow the original array (preview):

Array
(
    [Title] => 'Hello!'
    [Layout] => 'Shared/_Master'
    [Section] => Array
        (
            [0] => 'Header'
            [1] => 'Body'
        )    
)

Code:

<?php 

$array = [
    'Title' => 'Hello', 
    'Layout' => 'Shared/_Master',
    'Section' => ['Header', 'Body']
    ];

$mineredSection = ['Header' => ['Hello!'], 'Body' => ['This is the body.']];

What did I already tried

I already tried this:

foreach ($array['Section'] as $index => $section) {
    $t[$section] = [array_values(array_filter($mineredSection))[$index]];
}

$a = array_replace($array['Section'], $t);

print_r($a);

The result is:

Array
(
    [0] => 'Header'
    [1] => 'Body'
    ['Header'] => Array
        (
            [0] => Hello!
        )

    ['Body'] => Array
        (
            [0] => This is the body
        )

)

Can someone give me an idea?

8
  • Maybe array_combine is what you want? Commented Dec 4, 2013 at 16:18
  • Maybe. I just doesn't know how to (technically) apply it in my case. Commented Dec 4, 2013 at 16:18
  • What is $this->contents? Commented Dec 4, 2013 at 16:21
  • $this->contents is ['Hello', 'This is the body']. My bad. Commented Dec 4, 2013 at 16:30
  • Then you can just do array_combine($array['Section'], $this->contents); :-) P.S. Isn't $mineredSection already the array you want? Commented Dec 4, 2013 at 16:31

2 Answers 2

1

You're looking for array_combine. You pass it two arrays, what you want as the keys and what you want as the values.

$array['Section'] = array_combine($array['Section'], $this->contents);
Sign up to request clarification or add additional context in comments.

Comments

0

Either this, or I'm not understanding what you're asking

$origarr = array('header', 'body');

foreach($origarr as $value){
    if ($value == 'header'){
        $header['header'] = array('hello'); 
    }
    if ($value == 'body'){
        $body['body'] = array('This is the body'); 
    }   
}

var_dump($header);
var_dump($body);

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.