更改 foreach 循环内的值不会更改正在迭代的数组中的值

2023-04-10php开发问题
2

本文介绍了更改 foreach 循环内的值不会更改正在迭代的数组中的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

为什么会这样:

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 循环内的值不会更改正在迭代的数组中的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

PHP实现DeepL翻译API调用
DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以...
2025-08-20 php开发问题
168

PHP通过phpspreadsheet导入Excel日期数据处理方法
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的...
2024-10-23 php开发问题
287

mediatemple - 无法使用 codeigniter 发送电子邮件
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)...
2024-08-23 php开发问题
11

Laravel Gmail 配置错误
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)...
2024-08-23 php开发问题
16

将 PHPMailer 用于 SMTP 的问题
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)...
2024-08-23 php开发问题
4

关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)...
2024-08-23 php开发问题
17