Ваш Javascript будет выполняться на клиенте, а не на сервере. Это означает, что foo
не оценивается на стороне сервера, и поэтому его значение не может быть записано в файл на сервере.
Лучший способ подумать об этом процессе - это как будто вы генерируя текстовый файл динамически. Текст, который вы генерируете, становится исполняемым кодом после того, как браузер интерпретирует его. Только то, что вы размещаете между тегами <?php
, оценивается на сервере.
Кстати, создание привычки встраивать случайные фрагменты PHP-логики в HTML или Javascript может привести к серьезному запутанному коду. Я говорю от болезненного опыта.
Вы устанавливаете ноль перед минимальной шириной поля:
printf("%05d",zipcode);
Если вам нужно сохранить zipcode в zipcode символьного массива [], вы можете использовать это:
snprintf( zipcode, 6, "%05.5d", atoi(zipcode));
Zipcode - это сильно локализованное поле, во многих странах есть символы в своих почтовых индексах, например, в Великобритании, Канаде. Поэтому в этом примере вы должны использовать поле string / varchar для его сохранения, если в любой момент вы будете отправлять или получать пользователей / клиентов / клиентов / etc из других стран.
Однако в общем случае вам следует используйте рекомендуемый ответ (printf("%05d", number);
).
Если вы находитесь на машине * NIX:
man 3 printf
Это покажет страницу руководства, аналогичную:
0 Значение должно быть заполнено нулями. Для преобразований d, i, o, u, x, X, a, A, e, E, f, F, g и G преобразованное значение дополняется слева нулями, а не пробелами. Если появляются 0 и - флаги, флаг 0 игнорируется. Если точность задана с числовым преобразованием (d, i, o, u, x и X), флаг 0 игнорируется. Для других преобразований поведение не определено.
blockquote>Даже если вопрос касается C, , эта страница может быть полезной.
man
, он сужает ее до этого конкретного раздела. Без него вы получите справочную страницу для команды оболочки printf
вместо функции C.
– Paul Tomblin
25 February 2018 в 17:51
Правильное решение - хранить почтовый индекс в базе данных как STRING. Несмотря на то, что он может выглядеть как число, это не так. Это код, где каждая часть имеет смысл.
Число - это то, на что вы делаете арифметику. Почтовый индекс не тот.
Вы сохраните себе кучу неприятностей (долгосрочный), если вы сохраните почтовый индекс как строку символов, а не число, которое оно не является.
Более гибкий. Вот пример, печатающий строки правых чисел с фиксированной шириной и пробел.
//---- Header
std::string getFmt ( int wid, long val )
{
char buf[64];
sprintf ( buf, "% *ld", wid, val );
return buf;
}
#define FMT (getFmt(8,x).c_str())
//---- Put to use
printf ( " COUNT USED FREE\n" );
printf ( "A: %s %s %s\n", FMT(C[0]), FMT(U[0]), FMT(F[0]) );
printf ( "B: %s %s %s\n", FMT(C[1]), FMT(U[1]), FMT(F[1]) );
printf ( "C: %s %s %s\n", FMT(C[2]), FMT(U[2]), FMT(F[2]) );
//-------- Output
COUNT USED FREE
A: 354 148523 3283
B: 54138259 12392759 200391
C: 91239 3281 61423
Функция и макрос сконструированы таким образом, что printfs более читабельны.
#define FMT(x) (getFmt(8,x).c_str())
(обратите внимание на параметр x i>!), В отличие от переменной ( что и делает ваш код).
– Ponkadoodle
2 August 2014 в 04:47
printf допускает различные варианты форматирования.
ex:
printf("leading zeros %05d", 123);
sprintf(mystring, "%05d", myInt);
Здесь «05» говорит «используйте 5 цифр с ведущими нулями».