В ответе Адриена нет необходимости создавать последовательно пронумерованный массив из двух последовательно пронумерованных массивов - вот несколько вариантов, которые будут:
array_values(array_unique(array_merge($array1, $array2)));
(ответ Адриена с нумерацией ключей впоследствии)
array_keys(array_flip($array1)+array_flip($array2))
(Поместите значения в ключи и используйте оператор объединения массивов)
array_merge($array1, array_diff($array2, $array1))
(Удалите общие значения из второго массива перед объединением)
Результаты тестов (для объединение двух массивов длиной 1000 в моей системе тысячу раз):
Тот же тест, но с двумя очень похожими массивами (по крайней мере, 80% дублируются):
Кажется, используя массив оператор союза, чтобы сделать ctual union - самый быстрый метод. Однако обратите внимание, что array_flip
безопасен, только если значения массива - это все строки или все целые числа; если вам нужно произвести объединение массива объектов, я рекомендую версию с array_merge
и array_diff
.
Под Timestamp
, я полагаю, вы имеете в виду java.sql.Timestamp
. Вы заметите, что у этого класса есть конструктор, который принимает аргумент long
. Вы можете проанализировать это, используя класс DateFormat
:
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("23/09/2007");
long time = date.getTime();
new Timestamp(time);
Что вы имеете в виду, отметка времени? Если вы имеете в виду миллисекунды с эпохи Unix:
GregorianCalendar cal = new GregorianCalendar(2007, 9 - 1, 23);
long millis = cal.getTimeInMillis();
Если вам нужен фактический объект java.sql.Timestamp:
Timestamp ts = new Timestamp(millis);
Согласно API конструктор, принимающий год, месяц и т. Д., Устарел. Вместо этого вы должны использовать конструктор, который принимает long. Вы можете использовать реализацию Calendar , чтобы построить желаемую дату и получить доступ к представлению времени в виде длинного числа, например, с помощью метода getTimeInMillis .
Что насчет этого?
java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf("2007-09-23 10:10:10.0");
Вы также можете сделать следующее:
// untested
Calendar cal = GregorianCalendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 23);// I might have the wrong Calendar constant...
cal.set(Calendar.MONTH, 8);// -1 as month is zero-based
cal.set(Calendar.YEAR, 2009);
Timestamp tstamp = new Timestamp(cal.getTimeInMillis());