Оператор инкремента PHP

<?php
 $s = "pa99";
 $s++;
 echo $s;
?>

Приведенный выше код выводит на "pb00" То, что я хотел, было "pa100" и так далее.

Но также в случае его "pa", я хочу, чтобы он пошел в "pb", который хорошо работает с оператором приращения.

3 ответа

Решение

Вы, как говорит Майкл, пытаетесь увеличить строку - это не работает (тм). Что вы хотите сделать, это:

<?php
 $s = "pa"; //we're defining the string separately!
 $i = 99; //no quotes, this is a number
 $i++;
 echo $s.$i; //concatenate $i onto $s
?>

Не существует автоматического способа увеличить строку (aa, ab и т. Д.) Так, как вы просите. Вы можете превратить каждую букву в число между 1-26 и увеличивать их, а затем увеличивать предыдущую при переполнении. Хотя это немного грязно.

Чтобы отделить целое число от строки, попробуйте это:

PHP разбивает строку на целочисленный элемент и строку

Из документов:

PHP следует соглашению Perl при работе с арифметическими операциями над символьными переменными, а не с Си. Например, в PHP и Perl $a = 'Z'; $ А ++; превращает $ a в 'AA', а в C a = 'Z'; A ++; превращает a в '[' (ASCII-значение 'Z' равно 90, ASCII-значение '[' равно 91). Обратите внимание, что символьные переменные можно увеличивать, но не уменьшать, и даже в этом случае поддерживаются только простые символы ASCII (az и AZ). Увеличение / уменьшение других символьных переменных не имеет никакого эффекта, исходная строка не изменяется.

<?php

  $s_letter = substr($s,0,2);
  $s_number = substr($s,2,9);

  $s_letter++; $s_number++;

  $s_result = $s_letter.$s_number;

  echo $s_result;

?>
Другие вопросы по тегам