我正在转储此循环变量$ 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]会发生什么?它们为什么不显示在我创建的对象中?
我可能是错的,但是这个
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倍的相同数据。