Để đáp ứng yêu cầu rằng "nó cần phải nhanh nhất có thể" Tôi đã chạy một điểm chuẩn trước một số giải pháp có thể. Mỗi giải pháp phải đáp ứng tập hợp các trường hợp thử nghiệm này.
$cases = [
'aaa-zzz' => 'zzz',
'zzz' => 'zzz',
'-zzz' => 'zzz',
'aaa-' => '',
'' => '',
'aaa-bbb-ccc-ddd-eee-fff-zzz' => 'zzz',
];
Đây là các giải pháp:
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
Dưới đây là kết quả sau khi mỗi giải pháp được chạy so với các trường hợp thử nghiệm 1.000.000 lần:
test_substr : 1.706 sec
test_end_index : 2.131 sec +0.425 sec +25%
test_end_explode : 2.199 sec +0.493 sec +29%
test_end_preg_split : 2.775 sec +1.069 sec +63%
Vì vậy, hóa ra nhanh nhất trong số này là sử dụng substr
với strpos
. Lưu ý rằng trong giải pháp này, chúng tôi phải kiểm tra strpos
cho false
để chúng tôi có thể trả lại chuỗi đầy đủ [phục vụ cho trường hợp zzz
].
Jason ¶
9 năm trước — Set the internal pointer of an array to its last element
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
ken tại expitrans dot com ¶[array|object &$array
]:
mixed
17 năm trước
Jacob ¶Mảng. Mảng này được truyền qua tham chiếu vì nó được sửa đổi bởi hàm. Điều này có nghĩa là bạn phải vượt qua nó là một biến thực và không phải là một hàm trả về một mảng vì chỉ các biến thực tế mới có thể được truyền bằng tham chiếu.
Trả về giá trị
Trả về giá trị của phần tử cuối cùng hoặc false
cho mảng trống.false
for empty array.
Ví dụ
Ví dụ #1 End [] Ví dụend[] example
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
1function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
2function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
3Xem thêm
- Dòng điện [] - Trả lại phần tử hiện tại trong một mảng
- Mỗi [] - Trả về cặp khóa và giá trị hiện tại từ một mảng và tiến lên con trỏ mảng
- Prev [] - Tua lại con trỏ mảng bên trong
- Đặt lại [] - Đặt con trỏ bên trong của một mảng thành phần tử đầu tiên của nó
- Tiếp theo [] - Nâng cao con trỏ bên trong của một mảng
- Array_Key_Last [] - Nhận khóa cuối cùng của một mảng
Franz tại DevelopHP Dot org ¶ ¶
11 năm trước
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
4function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
5function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6Jasper tại Jtey Dot Com ¶ ¶
16 năm trước
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
7function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
8function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6Jorge tại Removeethis-2Upmedia dot com ¶ ¶
10 năm trước
test_substr : 1.706 sec
test_end_index : 2.131 sec +0.425 sec +25%
test_end_explode : 2.199 sec +0.493 sec +29%
test_end_preg_split : 2.775 sec +1.069 sec +63%
0test_substr : 1.706 sec
test_end_index : 2.131 sec +0.425 sec +25%
test_end_explode : 2.199 sec +0.493 sec +29%
test_end_preg_split : 2.775 sec +1.069 sec +63%
1function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6Ẩn danh ¶ ¶
20 năm trước
test_substr : 1.706 sec
test_end_index : 2.131 sec +0.425 sec +25%
test_end_explode : 2.199 sec +0.493 sec +29%
test_end_preg_split : 2.775 sec +1.069 sec +63%
3test_substr : 1.706 sec
test_end_index : 2.131 sec +0.425 sec +25%
test_end_explode : 2.199 sec +0.493 sec +29%
test_end_preg_split : 2.775 sec +1.069 sec +63%
4test_substr : 1.706 sec
test_end_index : 2.131 sec +0.425 sec +25%
test_end_explode : 2.199 sec +0.493 sec +29%
test_end_preg_split : 2.775 sec +1.069 sec +63%
5test_substr : 1.706 sec
test_end_index : 2.131 sec +0.425 sec +25%
test_end_explode : 2.199 sec +0.493 sec +29%
test_end_preg_split : 2.775 sec +1.069 sec +63%
6ivijan dot stefan tại gmail dot com ¶ ¶
8 năm trước
test_substr : 1.706 sec
test_end_index : 2.131 sec +0.425 sec +25%
test_end_explode : 2.199 sec +0.493 sec +29%
test_end_preg_split : 2.775 sec +1.069 sec +63%
7test_substr : 1.706 sec
test_end_index : 2.131 sec +0.425 sec +25%
test_end_explode : 2.199 sec +0.493 sec +29%
test_end_preg_split : 2.775 sec +1.069 sec +63%
8function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6Aleksandr ¶ ¶
4 năm trước
substr
0
Jason ¶ ¶
9 năm trước
substr
1
substr
2
substr
3
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6ken tại expitrans dot com ¶ ¶
17 năm trước
substr
5
substr
6
substr
7
substr
8
substr
9
strpos
0Jacob ¶ ¶
5 năm trước
strpos
1
substr
8
strpos
3
strpos
4Laurence tại Crazypillstudios dot com ¶ ¶
12 năm trước
strpos
5
strpos
6
strpos
7
strpos
8Ẩn danh ¶ ¶
20 năm trước
strpos
9
strpos
0
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6ivijan dot stefan tại gmail dot com ¶ ¶
8 năm trước
strpos
2
strpos
3
strpos
4
strpos
5
strpos
6
strpos
7
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6Aleksandr ¶ ¶
4 năm trước
strpos
9
false
0
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6ken tại expitrans dot com ¶ ¶
17 năm trước
false
2
false
3
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6Jacob ¶ ¶
4 năm trước
false
5
false
6
function test_substr[$str, $delimiter = '-'] {
$idx = strrpos[$str, $delimiter];
return $idx === false ? $str : substr[$str, $idx + 1];
}
function test_end_index[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return $arr[count[$arr] - 1];
}
function test_end_explode[$str, $delimiter = '-'] {
$arr = explode[$delimiter, $str];
return end[$arr];
}
function test_end_preg_split[$str, $pattern = '/-/'] {
$arr = preg_split[$pattern, $str];
return end[$arr];
}
6