假设我有两个不同的数组。我希望从第一个数组中获取每个值,并将第二个数组中每个键的一些值添加到该数组中。我该怎么做呢?
我尝试在foreach循环中使用foreach循环,对于第一个数组中的每个值,它会附加第二个数组的每个值,而这并不是我想要的
$array1 = array(chris, kate, john, jane);
$array2 = array('first' => 1, 'second' => 2, 'third' => 3, 'fourth' => 4);
foreach($array1 as $name){
foreach($array2 as $k => $v){
echo $name . "-" . $v;
}
}我希望我的输出如下所示
chris-1
kate-2
john-3
jane-4有时,两个数组的计数并不相同。第一个数组中的一些值生成一个空字符串,因此在这种情况下,它应该跳过该值。跳过或删除array1中的空字符串后,计数将与array2匹配
我上面的嵌套循环不能给我这个。我该怎么做呢?
发布于 2019-05-21 10:50:42
首先,我将使用array_filter()从$array1中删除空字符串
$array1 = array(chris, kate, john, jane);
$array1 = array_filter($array1, function($value) {
return $value !== '';
});现在,我们需要对数组重新编制索引,以解决删除空字符串时出现的间隙。
$array1 = array_values($array1);考虑到你不会在$array2中使用'first','second‘等键做任何事情,我们可以使用array_values()去掉它们。这将给我们留下一个像array(1,2,3,4)这样的数组,它将使稍后访问数据变得更容易一些。
$array2 = array('first' => 1, 'second' => 2, 'third' => 3, 'fourth' => 4);
$array2 = array_values($array2);现在,我们可以遍历第一个数组并访问第二个数组中的相同位置,以创建最终的字符串。
// Assign the current element's numeric position to the $i variable on each iteration.
foreach($array1 as $i => $name){
echo $name . "-" . $array2[$i];
}最终代码
$array1 = ['chris', 'kate', '', 'john', 'jane'];
$array1 = array_filter($array1, function ($value) {
return $value !== '';
});
$array1 = array_values($array1);
$array2 = ['first' => 1, 'second' => 2, 'third' => 3, 'fourth' => 4];
$array2 = array_values($array2);
foreach ($array1 as $i => $name) {
echo $name . "-" . $array2[$i];
}https://stackoverflow.com/questions/56230025
复制相似问题