Generwp
Generwp

Reputation: 514

Make values of onedimensional array as the keys of multidimensional

I have two arrays:

Object
    protected 'value' => 
        array (size=4)
          0 => 
            object(stdClass)[668]
              public 'info' => string 'info' (length=10)
              public 'info ' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
          1 => 
            object(stdClass)[667]
              public 'info' => string 'info' (length=10)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
          2 => 
            object(stdClass)[673]
              public 'info' => string 'info' (length=10)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
          3 => 
            object(stdClass)[671]
              public 'info' => string 'info' (length=10)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)

And the other is:

Object
     protected 'value' => 
    array (size=4)
      0 => string '2016-11-23' (length=10)
      1 => string '2016-11-24' (length=10)
      2 => string '2016-11-25' (length=10)
      3 => string '2016-11-26' (length=10)

What I want, is to somehow merge those arrays in a way, that keys for arrays in a multidimensional array will equal the values from the second array, like this:

Object
    protected 'value' => 
        array (size=4)
          2016-11-23 => 
            object(stdClass)[668]
              public 'info' => string 'info' (length=10)
              public 'info ' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
          2016-11-24 => 
            object(stdClass)[667]
              public 'info' => string 'info' (length=10)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
          2016-11-25 => 
            object(stdClass)[673]
              public 'info' => string 'info' (length=10)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
          2016-11-26 => 
            object(stdClass)[671]
              public 'info' => string 'info' (length=10)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)
              public 'info' => string 'info' (length=1)

How can I do that?

Upvotes: 0

Views: 40

Answers (1)

Felippe Duarte
Felippe Duarte

Reputation: 15131

You could use array_combine. I'd tried to simulate with your input data:

$obj = new stdClass;
$obj->p1 = 
$obj->p2 =
$obj->p3 =
$obj->p4 = 'info';

$valueObject = new stdClass;
$valueObject->value = [clone $obj, clone $obj, clone $obj, clone $obj,];

$keyObject = new stdClass;
$keyObject->value = ['2016-11-23','2016-11-24','2016-11-25','2016-11-26',];

$outputObject = new stdClass;
$outputObject->value = array_combine($keyObject->value, $valueObject->value);

var_dump($outputObject);

Output

object(stdClass)#8 (1) {
  ["value"]=>
  array(4) {
    ["2016-11-23"]=>
    object(stdClass)#3 (4) {
      ["p4"]=>
      string(4) "info"
      ["p3"]=>
      string(4) "info"
      ["p2"]=>
      string(4) "info"
      ["p1"]=>
      string(4) "info"
    }
    ["2016-11-24"]=>
    object(stdClass)#4 (4) {
      ["p4"]=>
      string(4) "info"
      ["p3"]=>
      string(4) "info"
      ["p2"]=>
      string(4) "info"
      ["p1"]=>
      string(4) "info"
    }
    ["2016-11-25"]=>
    object(stdClass)#5 (4) {
      ["p4"]=>
      string(4) "info"
      ["p3"]=>
      string(4) "info"
      ["p2"]=>
      string(4) "info"
      ["p1"]=>
      string(4) "info"
    }
    ["2016-11-26"]=>
    object(stdClass)#6 (4) {
      ["p4"]=>
      string(4) "info"
      ["p3"]=>
      string(4) "info"
      ["p2"]=>
      string(4) "info"
      ["p1"]=>
      string(4) "info"
    }
  }
}

Upvotes: 1

Related Questions