Skip to main content

To sort through a multidimensional array seems to be a function that I occasionally call on.  Handy to have referenced here:

  /**
   * Loop through a multi dimensional array
   * 
   * @param array $haystack
   * Data array.
   */
  protected function sortMultiDimensionalArray($haystack)
  {
    foreach ($haystack as $key => $item) {
      // If $item is an array and the number of children is greater to one
      // keep looping through the array.
      if (is_array($item) && count($haystack[$key]) > 1) {
        $this->sortMultiDimensionalArray($haystack[$key]);
      }
      // If count is equal to one then load it in to the get_value array.
      elseif (is_array($item) && count($haystack[$key]) == 1) {
        $k = key($item);
        if (is_array($item[$k])) {
          $k2 = key($item[$k]);
          $this->get_value[] = $item[$k][$k2];
        }
        else {
          $this->get_value[] = $item[$k];
        }
      }
      // Not an array.
      elseif (!is_array($item)) {
        $this->get_value[] = $item;
      }
    }
  }

 

Related articles