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

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.