我正在尝试插入一些项目(假设n
items),它们都彼此不同,到一个数组。不知何故,最终的数组包括n
items, 它们都是相同的项目:最后插入的项目。
这是我的代码:
$searchResults_data = [];
foreach($allowSearch as $searchResultItem) {
$searchResultJSon->dealid = $searchResultItem['id'];
$searchResultJSon->title = $searchResultItem['title'];
//$from->send(json_encode($searchResultJSon)); --- DEBUGGING1 ---
//$from->send(json_encode($searchResults_data)); --- DEBUGGING2 ---
$searchResults_data[] = $searchResultJSon;
}
所以我试图找出为什么......使用DEBUGGING1
,DEBUGGING2
(在客户端,我收到由$from->send()
简单地alert()
them).
当发出警报时DEBUGGING1
消息 - 我确实看到所有项目都是正确的并且彼此不同。
当发出警报时DEBUGGING2
messages - 数组在每个循环中复制最后插入的项目。所以假设我插入n
items,数组中i-th
循环将是:[item-i, item-i, item-i, ... item-i]
代替 [item-1, item-2, item-3,...,item-i]
你的问题是你每次循环时都不会创建一个新对象,所以当你按下$searchResultJSon
into $searchResults_data
您正在推送同一个对象,并且您在循环的最后一次迭代中对其所做的更改反映在all中的值$searchResults_data
。您可以通过在每次传递中创建一个新对象来解决这个问题:
$searchResults_data = [];
foreach($allowSearch as $searchResultItem) {
$searchResultJSon = new StdClass();
$searchResultJSon->dealid = $searchResultItem['id'];
$searchResultJSon->title = $searchResultItem['title'];
//$from->send(json_encode($searchResultJSon)); --- DEBUGGING1 ---
//$from->send(json_encode($searchResults_data)); --- DEBUGGING2 ---
$searchResults_data[] = $searchResultJSon;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)