【问题标题】:PHP explode() returns array inside an arrayPHPexplode() 在数组中返回数组
【发布时间】:2017-10-20 12:44:28
【问题描述】:

我有以下功能:

function GetTagsOfUser(){
    require "include/connect.php";
    $sql = "SELECT * FROM users WHERE User='Chona'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()){
            $tagsOfUser[] = explode(';', $row['Tags']);
        }
        return $tagsOfUser;
    }
}

当调用它并打印它时

print_r($Recomend->GetTagsOfUser());

我得到以下信息:

array(1) { [0]=> array(4) { [0]=> string(6) "Paises" [1]=> string(7) "Francia" [2]=> string(19) "Revolucion Francesa" [3]=> string(3) "ONU" } }

好像我的数组中有一个包含字符串的数组,我想要一个数组,请帮忙。

【问题讨论】:

  • 可能是因为这行:$tagsOfUser[] = explode(...)如果你把这行改成return explode(...),就会有一个单层数组
  • $tagsOfUser[] .. [] 创建它?

标签: php sql arrays function explode


【解决方案1】:

变量 $tagsOfUser[] 是一个数组:

$tagsOfUser[] = explode(';', $row['Tags']);

并且explode返回一个数组,结果就是你正在做的。

去掉变量名中的“[]”,你的问题就解决了。

【讨论】:

  • 从变量名中去掉“[]”,你的问题就解决了。 - 两行发生了什么?
【解决方案2】:

您将结果数组从 explode 设置为另一个数组 ($tagsOfUser):

$tagsOfUser[] = explode(';', $row['Tags']);

你可以使用array_merge来解决这个问题:

$tagsOfUser = array_merge($tagsOfUser, explode(';', $row['Tags']));

function GetTagsOfUser() {
    require "include/connect.php";

    $sql = "SELECT * FROM users WHERE User='Chona'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $tagsOfUser= [];

        while ($row = $result->fetch_assoc()){
            $tagsOfUser = array_merge($tagsOfUser, explode(';', $row['Tags']));
        }

        return $tagsOfUser;
    }
}

您只需要/需要一行(针对特定用户)?

在这种情况下,您不需要while 循环或$tagsOfUser 变量:

function GetTagsOfUser() {
    require "include/connect.php";

    $sql = "SELECT TOP 1 * FROM users WHERE User = 'Chona'";
    $result = $conn->query($sql);

    if ($result->num_rows == 1) {
        $row = $result->fetch_assoc();
        return explode(';', $row['Tags']);
    } else {
        return [];
    }
}

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 2018-05-10
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多