所以目前我在尝试访问这个多维数组中的元素时遇到了一些问题。所以我要做的是创建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。我现在无法找到一种方法来访问第二个数组元素,并且想知道是否有人能指出我正确的方向。感谢您的帮助。
答案 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();