[英]PHP 2 Arrays in Foreach-loop?
I have used array_combine to print out 2 different arrays, but the function use first array for index, and he supress values with same content. 我已经使用array_combine打印出2个不同的数组,但是该函数使用第一个数组作为索引,并且他禁止具有相同内容的值。 I need printout even when has a same value.
即使值相同,也需要打印输出。 Some tip about how resolve this?
有关如何解决此问题的一些技巧?
function mostra_2com($valor, $valor2){
echo "<table class='bs'><tr><td><b>Atividades</b></td><td><b>Opiniões</b></td></tr>";
foreach (array_combine($valor, $valor2) as $val => $val2)
echo "<tr><td>".$val." </td><td> ".$val2."<br></td></tr>";
echo"</table>";
}
enter code here
You probably want to use MultipleIterator
: 您可能要使用
MultipleIterator
:
$mi = new MultipleIterator(MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC);
$mi->attachIterator(new ArrayIterator($valor), 'val');
$mi->attachIterator(new ArrayIterator($valor2), 'val2');
foreach ($mi as $values) {
extract($values);
echo '<tr><td>', $val, '</td><td>', $val2, '<br></td></tr>';
}
It iterates over both arrays at the same time and for each iteration yields $values
as an array like this: 它同时在两个数组上进行迭代,并且每次迭代都会产生
$values
作为数组,如下所示:
array('val' => 1, 'val2' => 4);
In this example 1
and 4
would come from $valor
and $valor2
respectively. 在这个例子中
1
和4
将来自$valor
和$valor2
分别。 I then use extract()
inside the loop to bind those keys to actual variables. 然后,我在循环内使用
extract()
将这些键绑定到实际变量。
Maybe a case for an SPL multipleiterator: 可能是SPL多迭代器的一种情况:
$valor = array(10, 20, 30);
$valor2 = array(15, 10, 15);
$mi = new MultipleIterator(MultipleIterator::MIT_NEED_ALL | MultipleIterator::MIT_KEYS_ASSOC);
$mi->attachIterator(new ArrayIterator($valor), 'val');
$mi->attachIterator(new ArrayIterator($valor2), 'val2');
foreach($mi as $details) {
echo "<tr><td>" . $details['val'] . "</td><td>" . $details['val2'] . "<br></td></tr>";
}
PHP > 5.5 PHP> 5.5
$valor = array(10, 20, 30);
$valor2 = array(15, 10, 15);
$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($valor));
$mi->attachIterator(new ArrayIterator($valor2));
foreach($mi as list($val, $val2)) {
echo "<tr><td>" . $val. "</td><td>" . $val2. "<br></td></tr>";
}
You could use array_merge() 您可以使用array_merge()
$a = array('1', '2');
$b = array('1', '4');
$c = array_merge($a,$b);
print_r($c);
// Array ( [0] => 1 [1] => 2 [2] => 1 [3] => 4 );
Try this instead: 尝试以下方法:
function my_array_combine($keys, $values) {
$result = array();
foreach ($keys as $i => $k) {
$result[$k][] = $values[$i];
}
array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;'));
return $result;
}
ripped from http://php.net/manual/en/function.array-combine.php It should be possible to make this code alot faster, if you are doing <1,000,000 items, not a problem as is. 从http://php.net/manual/zh-CN/function.array-combine.php中删除如果您要执行<1,000,000项,应该可以使此代码更快一些,这不是问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.