php - 我正在做一个 preg_split 但只获得数组的第二个值的值 - PHP
问题描述
有了这段代码,我试图在“//”中拆分一个字符串,但它只给了我在 $splits[1] 上的值,而在 $splits[0] 上什么也没给我。
while($row = $result->fetch_assoc()) {
$amigos[] = $row["Id2"]."//".$row["ID"];
}
foreach ($amigos as $i => $value) {
$splits = preg_split("//", $value);
$IDAmizade = $splits[0];
$IDAmigo = $splits[1];
$sql = "SELECT `Nome`,`Agrupamento` FROM `Users` WHERE `ID`='$IDAmigo'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
echo($row["Nome"] . "+" . $row["Agrupamento"] . "+". $IDAmizade . "/");
}
是的 $_row["Id2"] 正在返回一个我已经确认的数字。
我要拆分的字符串就像:“1//3”,拆分后它给了我 splits[0] 什么都没有, splits[1] 是 3
我究竟做错了什么?
解决方案
0 索引为空的原因是因为在这部分中使用preg_splitpreg_split("//",
时,第一个参数是/
用作分隔符的正则表达式,因此您将字符串拆分为空字符串。
$pattern = "//";
$string = "1//3";
print_r(preg_split($pattern, $string));
输出
Array
(
[0] =>
[1] => 1
[2] => /
[3] => /
[4] => 3
[5] =>
)
如果您想使用 preg_split with/
作为分隔符并拆分,//
则必须转义正斜杠。
$pattern = "/\/\//";
如果您使用另一个分隔符,例如~
模式看起来像
$pattern = "~//~";
正如已经指出的,您可以使用explode代替
$string = "1//3";
print_r(explode("//", $string));
输出
Array
(
[0] => 1
[1] => 3
)
推荐阅读
- android - 错误膨胀类 ImageButton 停止应用程序启动
- reactjs - 按下后退按钮时浏览器重新加载反应应用程序
- c - 如何使用netlink进行IPC?
- json - Flutter 使用 Json 响应填充下拉列表,使用 dio 插件进行服务器调用
- python - 如何使用两个不同的模型附加用户模型,以便可以通过 current_user 访问这些模型的属性
- python - AttributeError:“unicode”对象没有属性“readlines”
- angular - 角度错误:依赖数组必须有参数
- java - 用java远程连接oracle数据库
- android - RecyclerView 中具有最大宽度的简单约束布局子项
- python - 使用移位函数比较行值