في PHP، كيف أضيف إلى سلسلة رقمية مبطنة صفرية والحفاظ على الحشو الصفر؟

StackOverflow https://stackoverflow.com/questions/718229

سؤال

إذا كان لدي متغير في PHP يحتوي على 0001 وأضيف 1 لذلك، والنتيجة هي 2 بدلا من 0002.

كيف يمكنني حل هذه المشكلة؟

هل كانت مفيدة؟

المحلول

$foo = sprintf('%04d', $foo + 1);

نصائح أخرى

من المحتمل أن تساعدك على فهم أنواع بيانات PHP وكيف تتأثر عند قيامك بالعمليات لمتغيرات أنواع مختلفة. أنت تقول أن لديك "متغير في PHP قل 0001"، ولكن النوع هو هذا المتغير؟ ربما سلسلة، "0001"، لأن عدد صحيح لا يمكن أن يكون له هذه القيمة (فقط 1). لذلك عند القيام بذلك:

echo ("0001" + 1);

...ال + يقول المشغل، "HM، هذه سلسلة وعدد صحيح. أنا لا أعرف كيفية إضافة سلسلة و int. لكنني أعرف كيفية تحويل سلسلة إلى int، ثم قم بإضافة اثنين من Ints معا، لذلك اسمحوا لي افعل ذلك، "ثم يحول" 0001 "إلى 1. لماذا؟ نظرا لأن قواعد PHP لتحويل سلسلة إلى عدد صحيح يقول إن أي عدد من الأصفار الرائدة في السلسلة يتم التخلص منها. مما يعني أن سلسلة "0001" تصبح 1.

ثم + يقول، "مهلا، أنا أعرف كيفية إضافة 1 و 1. إنه 2!" وإنتاج هذا البيان هو 2.

خيار آخر هو str_pad () وظيفة.

$text = str_pad($text, 4, '0', STR_PAD_LEFT);
<?php
#how many chars will be in the string
$fill = 6;
#the number
$number = 56;
#with str_pad function the zeros will be added
echo str_pad($number, $fill, '0', STR_PAD_LEFT);
// The result: 000056
?>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top