foreach循环仅重复最后一个数组值 [英] foreach loop only repeating last array value
本文介绍了foreach循环仅重复最后一个数组值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个数组.
ArrayA是数字
(ArrayA => 3, 7, 8)
ArrayB是一个关联数组
ArrayB is an associative array
(1=>bread, 2=>banana, 3=>fruit, 4=> milk, 5=>pizza, 6=> gum, 7=>corn, 8=>lager)
我想创建第三个关联数组ArrayC,该数组将ArrayA的值与ArrayB键匹配,并为ArrayA键提供相关的ArrayB值.
I want to create a third array, ArrayC, associative, that matches the Values of ArrayA with ArrayB keys, and gives ArrayA keys the relevant ArrayB values.
换句话说,从此示例
ArrayC (3 => fruit, 7=>corn, 8=>lager)
但是我的代码只给我
ArrayC (3 => lager, 7=>lager, 8=>lager) //last value of ArrayB
代码:
$ArrayC = array();
foreach ($ArrayB as $keyB => $valueB) {
foreach ($ArrayA as $valueA) {
if ( $valueA = $keyB) {
$ArrayC [$valueA] = $valueB;
}
}
}
print_r($ArrayC);
推荐答案
首先:if
需要与==
进行比较,而不是与=
(其设置值)进行比较.
First: if
need compare with ==
, not with =
(it set value).
第二:这是更好的代码版本:
Second: this is a better version of code:
// The keys that you want copy from ArrayB
$ArrayA = array(3, 7, 8);
// The values that will be copied
$ArrayB = array(1 => 'bread', 2 => 'banana', 3 => 'fruit',
4 => 'milk', 5 => 'pizza', 6 => 'gum', 7 => 'corn',
8 => 'lager');
// The filtered array (based on ArrayA and ArrayB)
$ArrayC = array();
// For each ArrayA values (3, 7 and 8), trigger this routine
// setting ArrayKey as each value of ArrayA, one for time
foreach($ArrayA as $ArrayKey) {
// Basically: $ArrayC [3] = $ArrayB [3]; (...)
$ArrayC [$ArrayKey] = $ArrayB [$ArrayKey];
}
// Final result will be:
// $ArrayC = array( 3 => 'fruit', 7 => 'corn', 8 => 'lager' );
这篇关于foreach循环仅重复最后一个数组值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文