foreach循环仅重复最后一个数组值 [英] foreach loop only repeating last array value

查看:61
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆