PHP Foreach和字符串连接

时间:2017-08-13 22:56:24

标签: php string foreach concatenation

使用两个关联数组和一个嵌套的foreach循环,我想回应这个文本:

1abcd
2abcd
3abcd
4abcd

但不知何故,我得到了4d。我已多次查看代码,我知道它必须非常简单,但我无法找到问题。

<?php
$output = "";
$list1 = array('1' => '1', '1' => '2', '1' => '3', '1' => '4');
$list2 = array('a' => 'a', 'a' => 'b', 'a' => 'c', 'a' => 'd');

foreach($list1 as $key1 => $value1)
{   
    $letters = '';
        foreach($list2 as $key2 => $value2)
    {
        $letters .= $value2;
    }
   $output .= $value1;
   $output .= $letters . '<br>';
}

echo $output;

拜托,帮我解决这个问题!! 谢谢

3 个答案:

答案 0 :(得分:0)

要检查阵列,请执行此操作

echo "<pre>";
echo print_r($list1);
echo "</pre>";

它将返回此

Array
(
[1] => 4
)
1

为了得到你想要的答案,首先你需要将你的关联数组调整为这样的

$list1 = array('1' => '1', '2' => '2', '3' => '3', '4' => '4');
$list2 = array('a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd');

然后你可以继续这样做

$array = array();
foreach($list1 as $key1 => $value1){

$letters = '';
foreach($list2 as $key2 => $value2){
    $letters .= $value2;
}
$output .= $value1;
$output .= $letters . '<br>';

}

echo $output;

我希望这会有所帮助。

答案 1 :(得分:-1)

再看一下你的阵列
$list1 = array('1' => '1', '1' => '2', '1' => '3', '1' => '4'); $list2 = array('a' => 'a', 'a' => 'b', 'a' => 'c', 'a' => 'd'); print_r($list1); print_r($list2);

您已使用相同的密钥创建了关联数组,因此您所做的一切都是$list1 = array('1'=>'4')$list2 = array('a'=>'d')

答案 2 :(得分:-1)

请注意,您说您正在构建一个关联数组,&#34; associative&#34;意味着每个&#34;唯一&#34; key会有一个值。在你的数组中,你一遍又一遍地重写你的价值观,记住,关键就像是&#34;地点&#34;你想存储价值。如果您在同一个地方或密钥中存储不同的值,它将被覆盖。

正确的方法:

$list1 = array('0' => '1', '1' => '2', '2' => '3', '3' => '4');
$list2 = array('a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd');

如果您发现每个值都有不同的位置或键。

如果你运行你的代码,它现在应该工作。如果你注意,你会注意到你甚至不需要字母作为钥匙。

$list1 = array('0' => '1', '1' => '2', '2' => '3', '3' => '4');
$list2 = array('0' => 'a', '1' => 'b', '2' => 'c', '3' => 'd');

通过尝试两者,您将了解有关数组的更多信息。这是非常基础的。