Within a foreach() expression, is the value defined before or after the key?(在Foreach()表达式中,值是在键之前还是之后定义的?)
本文介绍了在Foreach()表达式中,值是在键之前还是之后定义的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在单词as
之后的经典foreach()
循环中,是否可以将key
变量用作value
变量的一部分,反之亦然?
*经过十多年的PHP开发,我才发现这种可能性。
推荐答案
A总是在赋值key
变量之前赋值value
变量。(Demo)
这似乎有点违反直觉,因为$v
在之后似乎是通过key
声明来访问的。
这意味着您可以安全地使用:
$array = ['a', 'b'];
$result = [];
foreach ($array as $result["prefix_$v"] => $v);
var_export($result);
制作:
array (
'prefix_a' => 0,
'prefix_b' => 1,
)
新生成的数组具有基于原始值的前缀key,而原始索引将成为新值。
如果字符串前面没有prefix_
,该操作实际上与array_flip()
相同。
反转赋值使
value
变量接收key
不能按预期工作。您可能希望生成["prefix_0", "prefix_1"]
,但它没有生成,而且由于试图访问未声明的变量,它还会生成通知/警告。(抱怨只出现在第一次迭代上,因为在第一次迭代之后,声明了$k
--它是前一次迭代的关键字。)
$array = ['a', 'b'];
$result = [];
foreach ($array as $k => $result["prefix_$k"]);
// not defined on first iteration -------^^
var_export($result);
错误输出:
Warning: Undefined variable $k in /in/iVm1u on line 6
array (
'prefix_' => 'a',
'prefix_0' => 'b',
)
对于其他上下文,我将提供另一个可用的示例,该示例使用值来确定输出数组中的数组键来生成多维数组。(Demo)
$array = [2, 3, 5];
$result = [];
foreach ($array as $result[$v * $v][$v] => $v);
var_export($result);
输出:
array (
4 =>
array (
2 => 0,
),
9 =>
array (
3 => 1,
),
25 =>
array (
5 => 2,
),
)
这篇关于在Foreach()表达式中,值是在键之前还是之后定义的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在Foreach()表达式中,值是在键之前还是之后定义的?
基础教程推荐
猜你喜欢
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 在多维数组中查找最大值 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01