У меня есть массив, который представляет время UNIX в типе int из таблицы, которую я не могу изменить. Некоторые строки не являются полными временными метками UNIX, но короткие на пару целых чисел. Есть причина, по которой это так в таблице, но для моего сценария мне нужна строка, чтобы изменить не 10-значные строки в «0», а 10-значные в дату («Ymd» ,?). Вот пример массива $ qucls:
Array
(
[0] => 1332594303
[1] => 1330960502
[2] => 1331227649
[3] => 1331305503
[4] => 1332594303
[5] => 1331147102
[6] => 1332680702
[7] => 1331301902
[8] => 1331048163
[9] => 1332248704
[10] => 1332421503
[11] => 31536000
[12] => 1331816703
[13] => 604800
[14] => 0
[15] => 31536000
[16] => 1332248703
[17] => 31536000
[18] => 1361922903
)
Это скрипт:
$k=0
$l=0
foreach ($qucls as $dt[$k]){
if (strlen($dt[$k]) < 10)
$dt[$k++] = '0';
else {$dt[$k++] = date("Ymd", $dt[$l++]);
}
}
for ($l=0; $l < $k; $l++){
}
Это результат после цикла:
Array
(
[0] => 20120324
[1] => 20120305
[2] => 20120308
[3] => 20120309
[4] => 20120324
[5] => 20120307
[6] => 20120325
[7] => 20120309
[8] => 20120306
[9] => 20120320
[10] => 20120322
[11] => 0
[12] => 19700101
[13] => 0
[14] => 0
[15] => 0
[16] => 19700817
[17] => 0
[18] => 19700101
)
Обратите внимание, что форма даты форматируется должным образом до тех пор, пока она не достигнет 1-го целого числа, равного strlen <10. В этот момент она заменяет целое число длиной менее 10 на «0», что является правильным, но даты после этого бредят , Он продолжает правильно изменять <10-значные единицы на 0. </p>
Может кто-нибудь помочь мне понять, что не так в этом цикле? Я не совсем получаю правильный результат со всеми этими датами 1970 года после начала ELSE. Я все еще новичок в этом.
Спасибо.