問題描述
為什么會這樣:
foreach( $store as $key => $value){
$value = $value.".txt.gz";
}
unset($value);
print_r ($store);
Array
(
[1] => 101Phones - Product Catalog TXT
[2] => 1-800-FLORALS - Product Catalog 1
)
我正在嘗試獲取 101Phones - 產品目錄 TXT.txt.gz
I am trying to get 101Phones - Product Catalog TXT.txt.gz
對正在發生的事情的想法?
Thoughts on whats going on?
好吧,我找到了解決方案……我的數組中的變量有我看不到的值……正在做
Alright I found the solution...my variables in my array had values I couldn't see...doing
$output = preg_replace('/[^(x20-x7F)]*/','', $output);
echo($output);
清理并使其正常工作
推薦答案
文檔 http://php.net/manual/en/control-structures.foreach.php 清楚地說明了您遇到問題的原因:
The doc http://php.net/manual/en/control-structures.foreach.php clearly states why you have a problem:
為了能夠在循環中直接修改數組元素,在 $value 前面加上 &.在這種情況下,值將通過引用賦值."
"In order to be able to directly modify array elements within the loop precede $value with &. In that case the value will be assigned by reference."
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element
?>
只有當迭代數組可以被引用(即如果它是一個變量)時,才可能引用 $value.以下代碼不起作用:
Referencing $value is only possible if the iterated array can be referenced (i.e. if it is a variable). The following code won't work:
<?php
/** this won't work **/
foreach (array(1, 2, 3, 4) as &$value) {
$value = $value * 2;
}
?>
這篇關于更改 foreach 循環內的值不會更改正在迭代的數組中的值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!