Я разработчик 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
в 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
зиЬзЬг () принимает 2 аргумента и необязательный третий аргумент
(строка, начальная позиция, * длина результата)
* примечание: длина результата
пример:
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"
Вы можете тестовый субстрат онлайн здесь. Надеюсь это поможет.