function insert_in_array(&$array, $element, $position = null) { if (count($array) == 0) { $array[] = $element; } elseif (is_numeric($position) && $position < 0) { if (count($array) + $position < 0) { $array = insert_in_array($array, $element, 0); } else { $array[count($array) + $position] = $element; } } elseif (is_numeric($position) && isset($array[$position])) { $part1 = array_slice($array, 0, $position, true); $part2 = array_slice($array, $position, null, true); $array = array_merge($part1, array($position => $element), $part2); foreach ($array as $key => $item) { if (is_null($item)) { unset($array[$key]); } } } elseif (is_null($position)) { $array[] = $element; } elseif (!isset($array[$position])) { $array[$position] = $element; } $array = array_merge($array); return $array; }
/** * @return array * Returns the columns list, including db columns and calculated columns * Automatically adjusts the calc. column position */ static function getColumnsC() { $columnList = static::$dbColumns; // array('id','student_id','month','received_amount','comments'); $cCols = static::$calcColumns; //array('total_amount' => 'student_id','arrears' => 'received_amount') foreach ($cCols as $calCol => $col) { // array_search returns the key of the $col $position = array_search($col, $columnList) + 1; $columnList = insert_in_array($columnList, $calCol, $position); } return $columnList; }