我想在单个foreach循环中扩展两个数组,如..
$array=array(1,2,3,4,5,6,7,);
$array2=array(1=>'b','2=>c',3=>'d',4=>'e',5=>'f',6=>'g',7=>'x');
foreach($array as first && $aaray2 as second){
echo first;
echo second;
}
有可能吗? 我如何调用每个数组的索引和每个数组的值
答案 0 :(得分:3)
由于您的数组不使用命名键,因此您可以重用数组键。如果使用命名键,则仅在键相同时才有效。
foreach ($array as $key => $value) {
echo $value;
echo $array2[$key];
}
你也可以使用从0到数组长度的for循环计数,因为如果你没有指定任何数字,php会自动使用数字作为键,但上面的解决方案可能更具可读性,并且可以使用命名键。
答案 1 :(得分:2)
您可以使用array_combine创建一个包含key =>值对的数组。
foreach(array_combine($array, $array2) as $key => $value){
echo $key;
echo $value;
}
(array_combine返回组合数组,如果每个数组的元素数不相等则为FALSE)
答案 2 :(得分:0)
你可以像这样使用两个for循环:
foreach($array as $arr) {
echo $arr;
for($i=1; $i<count($array2); $i++){
echo $array2[$i];
}
}
答案 3 :(得分:0)
前几天我写了一个ZipIterator
课程,专门用来做这个。
用法示例:
$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');
foreach (new ZipIterator($array, $array2) as $pair) {
echo "first: ".$pair[0].", second: ".$pair[1];
}
功能强>
<强>要求:强>
See it in action 并从GitHub抓取the source。
答案 4 :(得分:0)
$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');
$mi = new MultipleIterator(
MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(new ArrayIterator($array), 'val');
$mi->attachIterator(new ArrayIterator($array2), 'val2');
foreach($mi as $details) {
echo $details['val'], ' - ', $details['val2'], PHP_EOL;
}
或
$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');
$mi = new MultipleIterator(
MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(new ArrayIterator($array), 'val');
$mi->attachIterator(new ArrayIterator($array2), 'val2');
foreach($mi as $details) {
extract($details);
echo $val, ' - ', $val2, PHP_EOL;
}
或仅适用于PHP 5.5+
$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');
$mi = new MultipleIterator(
MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC
);
$mi->attachIterator(new ArrayIterator($array));
$mi->attachIterator(new ArrayIterator($array2));
foreach($mi as list($val, $val2)) {
echo $val, ' - ', $val2, PHP_EOL;
}
答案 5 :(得分:-1)
只需合并两个数组并执行循环
$array=array(1,2,3,4,5,6,7,);
$array2=array('b','c','d','e','f','g','x');
$array = array_merge($array, $array2);
foreach ($array as $value) {
echo $value;
}