我想创建一个由两个不同数组的两个数据组成的字符串。我用两个foreach
遍历两个数组以获取我的数据。但问题是我想同时循环foreach
。
所以例如(例如,这些数组不是真的),我有第一个数组:
array1 =('apple','orange','banana','lemon');
第二个阵列:
array2 =('果汁','水果','拆分','树');
我想循环遍历这些数组并创建一个类似的字符串:
“苹果汁”,“橙子水果”,“香蕉分裂”,“柠檬树”
凭借我的功能,我得到:
“苹果汁”,“橙汁”,“香蕉汁”,“柠檬汁”
我听说过递归函数,但我不知道该怎么做或者它是最好的方法。
所以这是我的代码:
foreach ($xml as $table)
{
foreach ($table as $champs) /
{
foreach($array as $ligne)
{
foreach($ligne as $elt)
{
if ($table['nom']=='traitement')
{
$stringUpdate .= '\''.$champs->nom.'=\''.$elt.'\',';
break 2;
}
}
}update_traitement($stringUpdate);
$stringUpdate='';
}
}
是的,有人能帮帮我吗?我真的不知道该怎么做。
编辑:
具体而言,我有一个数组,其中包含我从xml文件获取的数据以及另一个数组来自handontable。所以第二个数组是二维的,这就是我需要使用4 foreach
的原因。
我需要循环遍历第二个数组的行和列,我认为简单的foreach
将不匹配。
答案 0 :(得分:1)
您只需要一个foreach
$array1 =('apple','orange','banana','lemon');
$array2 =('juice','fruit','split','tree');
foreach($array1 as $i=>$value){
echo $value." ".$array2[$i];
}
答案 1 :(得分:0)
当两个数组具有相同的键和大小时,您可以像这样处理它
<?php
foreach($array1 as $key=$val) {
echo $val.' '.$array2[$key];
}
答案 2 :(得分:0)
$array1 = array('apple','orange','banana','lemon');
$array2 = array('juice','fruit','split','tree');
$output = array();
if (! empty($array1)) {
$i=0;
foreach ($array1 as $elem) {
$output[] = $elem . ' ' . $array2[$i];
++$i;
}
}
echo '<pre>';
print_r($output);
echo '</pre>';
<强>解释强>
您正在循环遍历两个数组,但是,键是相同的。
所以,你可以在一个循环中完成它。
为循环设置一个计数器变量,并将其作为第二个数组的键。
答案 3 :(得分:0)
使用for循环让$ i在循环中每圈增加1。使用$ i访问相应数组中的值。
$array1 = array('apple', 'orange', 'banana', 'lemon');
$array2 = array('juice', 'fruit', 'split', 'tree');
for($i=0;$i < count($array1);$i++) {
$array3[] = $array1[$i] . " " . $array2[$i];
}
print_r($array3);
输出:数组([0] =&gt;苹果汁[1] =&gt;橙子水果[2] =&gt;香蕉分割[3] =&gt;柠檬树)
如果......
,这将有效<强>更新强>
好吧,即使数组没有相同的键和大小,这也行。
function merge($array1, $array2) {
foreach($array1 as $item) {
$newArray1[] = $item;
}
foreach($array2 as $item) {
$newArray2[] = $item;
}
if(count($newArray1) < count($newArray2)) {
$stop = count($newArray1);
} else {
$stop = count($newArray2);
}
for($i=0;$i < $stop;$i++) {
$result[] = $newArray1[$i] . " " . $newArray2[$i];
}
return $result;
}
$array1 = array('apple', 'orange', 'banana', 'lemon');
$array2 = array('juice', 'fruit', 'split', 'tree');
print_r(merge($array1, $array2));
$array3 = array('apple', 'orange', 'banana');
$array4 = array('juice', 'fruit', 'split', 'tree');
print_r(merge($array3, $array4));
$array5 = array('foo' => 'apple', 'bar' => 'orange', 'test' => 'banana');
$array6 = array('juice', 'fruit');
print_r(merge($array5, $array6));
<强>输出:强>
Array([0] =&gt; apple juice [1] =&gt; orange fruit [2] =&gt; banana split [3] =&gt;柠檬树)
Array([0] =&gt; apple juice [1] =&gt; orange fruit [2] =&gt; banana split)
数组([0] =&gt;苹果汁[1] =&gt;橙子水果)
答案 4 :(得分:0)
那么阵列可能是二维的?这段代码适合你吗?
function merge($array1, $array2) {
foreach($array1 as $item) {
if(is_array($item)) {
foreach($item as $item2) {
$newArray1[] = $item2;
}
} else {
$newArray1[] = $item;
}
}
foreach($array2 as $item) {
if(is_array($item)) {
foreach($item as $item2) {
$newArray2[] = $item2;
}
} else {
$newArray2[] = $item;
}
}
if(count($newArray1) < count($newArray2)) {
$stop = count($newArray1);
} else {
$stop = count($newArray2);
}
for($i=0;$i < $stop;$i++) {
$result[] = $newArray1[$i] . " " . $newArray2[$i];
}
return $result;
}
$array1 = array('apple', 'orange', 'banana', 'lemon');
$array2 = array('juice', 'fruit', 'split', 'tree');
echo "<pre>";
print_r(merge($array1, $array2));
$array3 = array('apple', 'orange', 'banana');
$array4 = array('juice', 'fruit', 'split', 'tree');
print_r(merge($array3, $array4));
$array5 = array('foo' => array('apple', 'banana'), 'bar' => 'orange', 'test' => 'peach');
$array6 = array('juice', array('fruit', 'test'), 'hello');
print_r(merge($array5, $array6));
echo "</pre>";
输出: