vb.net — функция substr, возвращающая неверный результат в переполнении стека

Я разработчик VB.NET, работаю над проектом PHP, пытаюсь преобразовать свою функцию VB.NET в php, но не получаю желаемого результата. После отладки я обнаружил проблему с функцией substr.

в VB.NET я использую

mid(105,2,1)
This giving me output 0

но в php

substr(105,2,1)
Giving me output 5

0

Решение

Если вы хотите получить 0 в PHP Ваш код должен быть:

echo substr(105,1,1);

Выход:

0

Если вы хотите знать почему, прочитайте это:

mid функция в VB.NET

Public Shared Function Mid( _
ByVal str As String, _
ByVal Start As Integer, _
Optional ByVal Length As Integer _
) As String

ул — Необходимые. Строковое выражение, из которого возвращаются символы.

Начните — Необходимые. Целочисленное выражение. Начальная позиция символов для возврата. Если Start больше, чем количество символов в str, функция Mid возвращает строку нулевой длины («»). Начало основано.

длина Необязательный. Целочисленное выражение. Количество символов для возврата. Если опущено или если в тексте меньше символов длины (включая символ в позиции начала), возвращаются все символы от начальной позиции до конца строки.

пример

' Creates text string.
Dim TestString As String = "Mid Function Demo"' Returns "Mid".
Dim FirstWord As String = Mid(TestString, 1, 3)
' Returns "Demo".
Dim LastWord As String = Mid(TestString, 14, 4)
' Returns "Function Demo".
Dim MidWords As String = Mid(TestString, 5)

substr функция в PHP

string substr ( string $string , int $start [, int $length ] )

строка — Строка ввода. Должно быть один символ или дольше.

Начните — Если начало неотрицательно, возвращенная строка будет начинаться с начальной позиции в строке, считая с нуля. Например, в строке «abcdef» символ в позиции 0 — это «a», символ в позиции 2 — «c» и так далее.

Если Начните отрицательно, возвращаемая строка будет начинаться с начального символа с конца строки.

Если строка меньше или равно длине начальных символов, FALSE будет возвращено.

пример

<?php
echo substr('abcdef', 1);     // bcdef
echo substr('abcdef', 1, 3);  // bcd
echo substr('abcdef', 0, 4);  // abcd
echo substr('abcdef', 0, 8);  // abcdef
echo substr('abcdef', -1, 1); // f
?>

Узнайте больше на:

https://msdn.microsoft.com/en-us/library/05e63829%28v=vs.90%29.aspx

http://php.net/manual/en/function.substr.php

3

Другие решения

зиЬзЬг () принимает 2 аргумента и необязательный третий аргумент

(строка, начальная позиция, * длина результата)

* примечание: длина результата

  • если + ve, то смещение от Начните возвращенных результатов,
  • если -ве то смещение от конец возвращенных результатов

пример:

   substr("abcde",2,1);

// string: "abcde"// start position: 2  => returns "cde"// result length: 1  => returns "c"

substr(105,2,1);

// string: "105"// start position: 2  => returns "5"// result length: 1  => returns "5"

Вы можете тестовый субстрат онлайн здесь. Надеюсь это поможет.

1

По вопросам рекламы ammmcru@yandex.ru