0

I have an array like this :

array(2) {

  ["xxx"]=>
    array(2) {
      ["yyy"]=>
        array(1) {
          ["text"]=> string(13) "test offline2"
        }
      ["yyy2"]=>
        array(1) {
          ["text"]=> string(12) "test offline"
        }
    }
    ["usual_name"]=> string(12) "test offline"

}

And I would like to have a new array like this :

array(3) {
  ["xxx.yyy"]=> string(12) "test offline"
  ["xxx.yyy2"]=> string(12) "test offline"
  ["usual_name"]=> string(12) "test offline"
}

If someone can help me pls !

Florian
  • 3
  • 1
  • 5
    Possible duplicate of [PHP - Convert multidimensional array to 2D array with dot notation keys](https://stackoverflow.com/questions/10424335/php-convert-multidimensional-array-to-2d-array-with-dot-notation-keys) – Mischa Jul 02 '18 at 11:36

1 Answers1

0

Try this:

$arr1 = array("xxx"=>array(
                        "yyy" => array("text" => "test offline2"),
                        "yyy2" => array("text"=> "test offline")
                    ),
              "usual_name" => "test offline"
        );

$arr2 = array();
foreach ($arr1 as $key1 => $value1) {
    if(is_array($value1)) {
        foreach ($value1 as $key2 => $value2) {
            if(is_array($value2))
            {
                foreach ($value2 as $key3 => $value3) {
                    $arr2[$key1.'.'.$key2]= $value3;
                }
            }
        }
    }
    else {
        $arr2[$key1]= $value1;
    }
}
  • Yeah ! It works, thanks ! But do you know how to do it recursively pls ? (if there are more than 2/3 arrays) – Florian Jul 02 '18 at 12:24
  • ` $arr1 = array("xxx"=>array( "yyy" => array("text" => "test offline2"), "yyy2" => array("text"=> "test offline") ), "usual_name" => "test offline" ); $concatArray = keyConcatinate($arr1); function keyConcatinate($arr1, $arr2 = array(), $key2 = '') { foreach ($arr1 as $key => $value) { if (is_array($value)) { $arr2 = array_merge($arr2, keyConcatinate($value, $arr2, $key2 . $key . '.')); } else { $arr2[$key2 . $key] = $value; } } return $arr2; }` – abhijeet.supekar Jul 02 '18 at 12:37
  • @Florian Try above code which do the same task but using recursion. – abhijeet.supekar Jul 02 '18 at 12:38