我正在转储这个循环变量$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('EntitiesDocuments')->findById($document_id);
var_dump($documents);
}
My 对象仅包含数组第一个键的结果
array(1) { [0]=> object(EntitiesDocuments)#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霍万斯基在评论中所说的似乎是真的,即使这不是你在这里的主要问题。如果正确传递数据,则打印的数据将是相同的 4 倍。