PHP - 访问Multidimension数组元素

时间:2018-04-24 01:19:18

标签: php multidimensional-array

所以目前我在尝试访问这个多维数组中的元素时遇到了一些问题。所以我要做的是创建3个不同类的不同数组,然后在最后将它们返回到数组中。

当我试图在$ result数组中找到一个数组时出现问题。我已经检查过,阵列中有元素,但我无法访问它们。

public function search($searchString) : array
{
        $bloggArr[] = array();
        $bloggerArr[] = array();
        $innleggArr[] = array();

        $stmt = $this->db->prepare("SELECT * FROM blogg WHERE 
        bnavn=:bnavn");
        $stmt->bindParam('bnavn', $searchString, PDO::PARAM_STR);
        $stmt->execute();

        while ($blogg=$stmt->fetchObject("Blogg"))
        {
            $bloggArr[]=array('blogg'=>$blogg);
            echo $bloggArr['blogg']->hentBnavn();
            // sort($bloggArr);
        }

        $stmt = $this->db->prepare("SELECT * FROM blogger WHERE 
        fornavn=:fornavn OR etternavn=:etternavn");
        $stmt->bindParam('fornavn', $searchString, PDO::PARAM_STR);
        $stmt->bindParam('etternavn', $searchString, PDO::PARAM_STR);
        $stmt->execute();

        while ($blogger = $stmt->fetchObject("Blogger"))
        {
            $bloggerArr[]= array('blogger' => $blogger);
            // sort($bloggArr);
        }

        $stmt = $this->db->prepare("SELECT * FROM innlegg WHERE tittel=:tittel");
        $stmt->bindParam('tittel', $searchString, PDO::PARAM_STR);
        $stmt->execute();

        while ($innlegg = $stmt->fetchObject("Innlegg"))
        {
            $innleggArr[] = array('innlegg' => $innlegg);
            // sort($innleggArr);
        }
        $result = array('bloggArr' => $bloggArr, 'bloggerArr' => 
        $bloggerArr, 'innleggArr' => $innleggArr);
        return $result;
}

我以为我可以通过以下方式访问第二个数组中的元素:

echo $resultat['bloggArr']['blogg']->SomeFunction();
问题是我得到的错误信息是['blogg']是Undefined index。我现在无法找到一种方法来访问第二个数组元素,并且想知道是否有人能指出我正确的方向。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您未正确使用阵列。只考虑$bloggArr

$bloggArr[] = array();

创建:

Array
(
    [0] => Array
        (
        )

)

该行应更改为:

$bloggArr = array();

创建一个空数组。然后,每次循环,

$bloggArr[]=array('blogg'=>$blogg);

添加如下元素:

[1] => Array
    (
        [blogg] => <your object>
    )

因此,要访问$result数组中的这些值,您需要使用循环:

foreach ($result['bloggArr'] as $blogg) {
    echo $blogg['blogg']->SomeFunction();
}

如果您的查询只返回一个结果,那么您只需更改此行:

$bloggArr[]=array('blogg'=>$blogg);

$bloggArr=array('blogg'=>$blogg);

然后您可以通过

访问该功能
echo $result['bloggArr']['blogg']->SomeFunction();