为了账号安全,请及时绑定邮箱和手机立即绑定

我正在做一个 preg_split 但只获得数组的第二个值的值 - PHP

我正在做一个 preg_split 但只获得数组的第二个值的值 - PHP

PHP
杨魅力 2022-10-14 15:07:16
有了这段代码,我试图在“//”中拆分一个字符串,但它只给了我在 $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我究竟做错了什么?
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

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

)


查看完整回答
反对 回复 2022-10-14
?
茅侃侃

TA贡献1842条经验 获得超21个赞

您需要更改 preg_split 模式。您目前所做的会将字符串拆分为其组成字符。

所以

$splits = preg_split("//", $value);

应该:

$splits = preg_split("[//]", $value);

在此处查看有关 preg_split的更多信息,并在此处查看有关正则表达式的更多信息。

或者,您可以使用explode,它将一个字符串拆分为另一个字符串。

$splits = explode("//", $value);


查看完整回答
反对 回复 2022-10-14
?
catspeake

TA贡献1111条经验 获得超0个赞

正如评论中所说,为什么你有 2 个循环?一个就足够了,您不需要拆分字符串:


while($row = $result->fetch_assoc()) {

    $sql = "SELECT `Nome`,`Agrupamento` FROM `Users` WHERE `ID`='" . $row["ID"] . "'";

    $result2 = $conn->query($sql);

    $row2 = $result2->fetch_assoc();

    echo($row2["Nome"] . "+" . $row2["Agrupamento"] . "+". $row["Id2"] . "/");

}

此外,您最好使用 JOIN 而不是在循环中执行第二个 SELECT 。我不能说更多,因为我们不知道数据库的架构以及数据库是什么。


查看完整回答
反对 回复 2022-10-14
  • 3 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信