对象不返回带有学说的所有元素

问题描述 投票:0回答:1

我正在转储此循环变量$ document_id

foreach($onboarding_data as $user_id => $document_id) {
   var_dump($document_id);
}

并返回像应该这样的元素数组:

array(4) { [1]=> string(1) "1" [2]=> string(1) "1" [3]=> string(1) "1" [4]=> string(1) "1" }

但是当我使用$ document_id创建对象查询时

foreach($onboarding_data as $user_id => $document_id) {
    $documents = $this->em->getRepository('Entities\Documents')->findById($document_id);
    var_dump($documents);
}

我的对象仅包含数组第一个键的结果

array(1) { [0]=> object(Entities\Documents)#481 (3) { ["id":protected]=> int(1) ["documents":protected]=> string(8) "Form I-9" ["url":protected]=> string(7) "I-9.pdf" } }

[其他键[2],[3],[4]会发生什么?它们为什么不显示在我创建的对象中?

php foreach doctrine-orm doctrine doctrine-query
1个回答
0
投票

我可能是错的,但是这个

array(4) { [1]=> string(1) "1" [2]=> string(1) "1" [3]=> string(1) "1" [4]=> string(1) "1" }

看起来像整个数组的输出,而您正在打印数组的元素

选中此项以查看数据输出与所拥有的差异

$a = array();
array_push($a,"test 1");
array_push($a,"test 2");
var_dump($a);
echo("<br/>");
foreach($a as $user_id => $document_id) {
   var_dump($document_id);
}

输出是

array(2) { [0]=> string(6) "test 1" [1]=> string(6) "test 2" }
string(6) "test 1" string(6) "test 2"

我怀疑您的数组只有一个元素(并且该元素是您要打印的4个元素的数组)。这就是为什么您只有一个输出而不是4的原因。

所以我认为这是您的主要问题,但是@Alex Howansky在评论中所说的似乎是正确的,即使这不是您的主要问题。如果正确传递数据,则将打印出4倍的相同数据。

© www.soinside.com 2019 - 2024. All rights reserved.