foreach循环只重复最后一个数组值

Eng*_*dam 1 php arrays foreach

我有两个数组.

ArrayA是数字

(ArrayA => 3, 7, 8)
Run Code Online (Sandbox Code Playgroud)

ArrayB是一个关联数组

(1=>bread, 2=>banana, 3=>fruit, 4=> milk, 5=>pizza, 6=> gum, 7=>corn, 8=>lager)
Run Code Online (Sandbox Code Playgroud)

我想创建第三个数组ArrayC,associative,它将ArrayA的值与ArrayB键匹配,并为ArrayA键提供相关的ArrayB值.

换句话说,从这个例子

ArrayC (3 => fruit, 7=>corn, 8=>lager)
Run Code Online (Sandbox Code Playgroud)

但是我的代码只给了我

ArrayC (3 => lager, 7=>lager, 8=>lager) //last value of ArrayB
Run Code Online (Sandbox Code Playgroud)

码:

     $ArrayC = array();
     foreach ($ArrayB as $keyB => $valueB) {
          foreach ($ArrayA as $valueA) {
             if ( $valueA = $keyB) {
                   $ArrayC [$valueA] = $valueB;
             }
          }
      }
      print_r($ArrayC);
Run Code Online (Sandbox Code Playgroud)

Dav*_*ues 5

第一:if需要===(而不是设定值)进行比较.

第二:这是一个更好的代码版本:

// 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' );
Run Code Online (Sandbox Code Playgroud)

  • 这是一个简单的答案,适合评论.我认为这是一个更好的答案(例证),我现在就做了,但是由于我的评论,其他用户将来可以为我做.:) (2认同)