Man*_*hra 18 php arrays foreach
我需要有关foreach()循环的帮助.a我可以将两个变量传递到一个foreach循环中吗?
例如,
foreach($specs as $name, $material as $mat)
{
echo $name;
echo $mat;
}
Run Code Online (Sandbox Code Playgroud)
在这里,$specs并且$material都不过是在我存储一些规范和材料名称和要打印逐一的数组.运行后我收到以下错误:
解析错误:foreach行上的语法错误,意外',',期待')'.
pau*_*sm4 26
在开头,是For循环:
$n = sizeof($name);
for ($i=0; i < $n; $i++) {
echo $name[$i];
echo $mat[$i];
}
Run Code Online (Sandbox Code Playgroud)
Nul*_*teя 14
你不能在这样的foreach循环中有两个数组,但你可以使用array_combine来组合一个数组,然后将它打印出来:
$arraye = array_combine($name, $material);
foreach ($arraye as $k=> $a) {
echo $k. ' '. $a ;
}
Run Code Online (Sandbox Code Playgroud)
产量:
first 112
second 332
Run Code Online (Sandbox Code Playgroud)
但是,如果任何名称没有材料,那么您必须在其中包含空/空值,否则您无法确定哪个材料属于哪个名称.所以我认为你应该有一个像这样的数组:
$name = array('amy','john','morris','rahul');
$material = array('1w','4fr',null,'ff');
Run Code Online (Sandbox Code Playgroud)
现在你可以
if (count($name) == count($material)) {
for ($i=0; $i < $count($name); $i++) {
echo $name[$i];
echo $material[$i];
}
Run Code Online (Sandbox Code Playgroud)
仅供参考:如果您想拥有多个阵列foreach,可以使用list:
foreach ($array as list($arr1, $arr2)) {...}
Run Code Online (Sandbox Code Playgroud)
虽然首先你需要这样做: $array = array($specs,$material)
<?php
$abc = array('first','second');
$add = array('112','332');
$array = array($abc,$add);
foreach ($array as list($arr1, $arr2)) {
echo $arr1;
echo $arr2;
}
Run Code Online (Sandbox Code Playgroud)
输出将是:
first
second
112
332
Run Code Online (Sandbox Code Playgroud)
而且我仍然认为它不会满足您的确切目的,因为它会通过第一个数组然后是第二个数组.
Fab*_*ler 11
您可以使用MultipleIteratorSPL.这个简单的用例有点冗长,但适用于所有边缘情况:
$iterator = new MultipleIterator();
$iterator->attachIterator(new ArrayIterator($specs));
$iterator->attachIterator(new ArrayIterator($material));
foreach ($iterator as $current) {
$name = $current[0];
$mat = $current[1];
}
Run Code Online (Sandbox Code Playgroud)
迭代器的默认设置是,只要其中一个数组没有更多元素就可以停止,并且可以按照迭代器附加($current[0]和$current[1])的顺序使用数字键访问当前元素.
可以在构造函数文档中找到不同设置的示例.
| 归档时间: |
|
| 查看次数: |
13380 次 |
| 最近记录: |