han*_*dmr 56 php arrays foreach
我有一个数据库调用,我试图找出什么$key => $value做的一个foreach循环.
我问的原因是因为这两个代码输出相同的东西,所以我试图理解为什么它是这样编写的.这是代码:
foreach($featured as $key => $value){
echo $value['name'];
}
Run Code Online (Sandbox Code Playgroud)
这输出相同:
foreach($featured as $value) {
echo $value['name'];
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,是什么样的区别$key => $value,或只是$value在$key => $value循环.数组是多维的,如果这有所不同,我只想知道为什么$value要foreach在$key循环中传递.
dji*_*ngo 80
好吧,$key => $value在foreach循环中引用关联数组中的键值对,其中键用作确定值的索引而不是像0,1,2这样的数字...在PHP中,关联数组看起来像这个:
$featured = array('key1' => 'value1', 'key2' => 'value2', etc.);
Run Code Online (Sandbox Code Playgroud)
在PHP代码中:$featured是循环的关联数组,as $key => $value意味着每次循环运行并从数组中选择一个键值对,它将键存储在局部$key变量中以在循环块内使用,并且值为局部$value变量.因此,对于我们上面的例子阵列,foreach循环将达到第一个键值对,如果你指定的as $key => $value,它会存储'key1'在$key变量,'value1'在$value变量.
既然你不使用$key可变的循环块内,将它添加或移除它不会改变回路的输出,但它是最好的,包括该键值对,以表明它是一个关联数组.
另请注意,as $key => $value指定是任意的.你可以替换成as $foo => $bar,当你改变了循环块内的变量引用到新的变量,它的工作很好,只要,$foo和$bar.但制作它们$key并$value有助于跟踪它们的含义.
Cha*_*JRA 17
假设您有一个像这样的关联数组:
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => array('x'=>123)
);
Run Code Online (Sandbox Code Playgroud)
在第一次迭代中: $key="one"和$value=1.
有时您需要此密钥,如果您只想要该值,则可以避免使用它.
在最后一次迭代:$key='seventeen'和$value = array('x'=>123)这样进入这个第一个元素的值array值,你需要一个key,X在这种情况下:$value['x'] =123.
需要提到一个非常重要的地方,它需要key => value在foreach循环中使用该对.假设您要将新的/子元素添加到数组中的现有项(在另一个键中)$features.您应该执行以下操作:
foreach($features as $key => $feature) {
$features[$key]['new_key'] = 'new value';
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
foreach($features as $feature) {
$feature['new_key'] = 'new value';
}
Run Code Online (Sandbox Code Playgroud)
这里的最大区别在于,在第一种情况下,您通过主数组本身访问数组的子值,并使用当前由数组指针指向的元素的键.
在第二个(它不能用于此目的)中,您将数组中的子值分配给临时变量$feature,该变量在每次循环迭代后未设置.
区别在于
foreach($featured as $key => $value){
echo $value['name'];
}
Run Code Online (Sandbox Code Playgroud)
您可以$key从其键值对中操纵每个迭代的值.就像@djiango回答一样,如果你没有操纵每个值$key,那么循环的结果将完全相同
foreach($featured as $value) {
echo $value['name']
}
Run Code Online (Sandbox Code Playgroud)
来源: 您可以从PHP文档中读取它:
第一个表单循环遍历array_expression给出的数组.在每次迭代中,当前元素的value>被赋值为$ value,内部数组指针被提前> 1(因此在下一次迭代中,您将看到下一个元素).*
第二种形式还将在每次迭代时将当前元素的键分配给$ key变量.
如果您正在操作的数据是具有自定义键的数组,则可以将它们打印到屏幕,如下所示:
$array = ("name" => "Paul", "age" => 23);
foreach($featured as $key => $value){
echo $key . "->" . $value;
}
Run Code Online (Sandbox Code Playgroud)
应打印:
name->Paul
age->23
你也无法foreach($featured as $value)用同样的方式做到这一点.因此,请考虑上面的格式,以便在需要时操作键.
干杯
| 归档时间: |
|
| 查看次数: |
168409 次 |
| 最近记录: |