我知道这是多次问过,但我找不到与我有关的事情。我是PHP的新手,我正在学习如何使用foreach
。我得到了这段代码:
foreach($revert_result as $tu => $row){
$address = $row['Addr.Line2'] . $row['Addr.zip'] . $row['Addr.City'];
}
$row['Addr.Line2']
等运作良好,它显示我想要的信息,但只显示最后一个元素。所以最后一个元素会覆盖所有其他元素,我不知道为什么。
请注意,$row['Addr.Line2']
等是来自ERP系统的数据。这应该是正确的,因为它可以显示数据。
有人可以解释我为什么会这样或者给我一个如何解决的提示吗?
提前致谢
答案 0 :(得分:3)
foreach($revert_result as $tu => $row){
$address = $row['Addr.Line2'] . $row['Addr.zip'] . $row['Addr.City'];
}
您的foreach
循环将遍历$revert_result
数组,并将连接的字符串存储在$address
变量中。变量值在循环的每次迭代中被覆盖,并且在循环完成执行之后,$address
变量将包含最后一次迭代的值。
我相信你需要这里的所有价值观。在这种情况下,您将值添加到数组中,如下所示:
$addresses[] = array(); // initialize empty array
foreach($revert_result as $tu => $row){
$addresses[] = $row['Addr.Line2'] . $row['Addr.zip'] . $row['Addr.City'];
}
现在$addresses
将包含所有地址值,您可以随意使用它。
答案 1 :(得分:2)
这应该有效:
// declare an empty string variable to hold your addresses
// sometimes PHP error reporting will throw a fit if you try to use $address improperly later
$address = '';
// loop through your results
foreach($revert_result as $tu => $row){
// concatenate the addresses and add a <br> at the end to make the output legible
$address.= $row['Addr.Line2'] . $row['Addr.zip'] . $row['Addr.City'] . '<br>';
}
// display your output
echo $address;
或者这个:
// declare an array to store your addresses
// sometimes PHP error reporting will throw a fit if you try to use $address improperly later
$address = array();
// loop through your results
foreach($revert_result as $tu => $row){
// add a concatenated result item to your array
// calling $address[] automatically assigns to the next index
// the first loop will do $address[0]
// the second loop will do $address[1]
// the third loop will do $address[2]
$address[] = $row['Addr.Line2'] . $row['Addr.zip'] . $row['Addr.City'];
}
// use print_r() to nicely display all elements of your array
echo '<pre>'.print_r($address, true).'</pre>';
// You can also loop the $address array and echo
foreach($address as $k=>$v){
echo $v.'<br>';
}
答案 2 :(得分:1)
您可能希望使用数组来保存信息:
$address = array();
foreach($revert_result as $tu => $row){
$address[] = $row['Addr.Line2'] . $row['Addr.zip'] . $row['Addr.City'];
}
print_r($address);
答案 3 :(得分:1)
在循环的第一次迭代中,Addr
第一行的$revert_result
部分被分配到$address
。在循环的第二次迭代中,Addr
的第二行的$revert_result
部分被分配到$address
。在第三次迭代......你明白了。
你反复使用新值覆盖同一个变量,当然只有最后一个变量会在循环后保留。也许您想要创建一个数组:
$addresses = array();
foreach (...) {
$addresses[] = $row[...];
}