Skip to content

Instantly share code, notes, and snippets.

@criztovyl
Last active August 29, 2015 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save criztovyl/b4dc3e311ec9dee653b0 to your computer and use it in GitHub Desktop.
Save criztovyl/b4dc3e311ec9dee653b0 to your computer and use it in GitHub Desktop.
Associates integer-indexed arrays
<?php
/*
Replace array indices with associative keys
Copyright (C) 2015 Christoph "criztovyl" Schulz
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Converts an array to an associative array
*/
function to_assoc($array, $key, $deep = false){
if( gettype ( $array ) != "array" ) return $array;
//The new array
$new = array();
//Iterate
foreach ( $array as $element ) {
//Check if associative key is set in element
if( isset ( $element[$key] ) ) {
// Retrieve the associative key
$key_ = $element[$key];
// Associate
$new[$key_] = $element;
// Remove associative key from element
unset($new[$key_][$key]);
// Go deeper?
if ( $deep )
//Itearate
foreach ( $new[$key_] as $subkey => $value )
//Got deeper
$new[$key_][$subkey] = to_assoc($value, $key, $deep);
}
else array_push($new, $element);
}
return $new;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment