【问题标题】:How do I get the array values from two arrays by using keys如何使用键从两个数组中获取数组值
【发布时间】:2016-03-04 12:04:43
【问题描述】:

我的数组是

 $name=>
    Array
        (
            [0] => General
            [1] => General
            [2] => Outdoors
            [3] => Dining
            [4] => Dining
            [5] => Kitchen
            [6] => Kitchen

        )

 $key1=>
   Array
        (
            [0] => 1
            [1] => 2
            [2] => 7
            [3] => 11
            [4] => 12
            [5] => 17
            [6] => 18
        )

数组函数

 foreach ($key1 as $key => $value1) {
                    foreach ($name as $key => $value) {

                        echo $value "=>" $value1 ;
                        //echo "$value1";
                    }
                }

这里我想使用相同的键打印值

如果$name 的索引为[0] 而我的$key1 也采用[0]

即:我的结果应该是

General => 1
General => 2
Outdoors => 7
Dining => 11
Dining => 12
Kitchen => 17
Kitchen => 18

【问题讨论】:

  • foreach ($name as $key => $value) { echo $value "=>" $key1[$key];}
  • 每个foreach 将乘以嵌套设置中的结果数。因此,在您的代码中,您将拥有 36 输出。只需使用一次 foreach。

标签: php arrays foreach


【解决方案1】:

你只需要迭代一个数组,而不是两个:

foreach ($name as $key => $name_value) {
    echo "$name_value => " . $key1[$key];
}

【讨论】:

    【解决方案2】:

    您可以使用简单的 for 循环来执行此操作

    for ($i = 0; $i < count($name); $i++) {
        echo $name[$i] . '=>' . $key[$i]
    }
    

    【讨论】:

      【解决方案3】:

      您的代码的问题是您对两个 foreach 都使用相同的变量 $key,因此最后一个会覆盖该值。

      foreach ($key1 as $key => $value1) {
          foreach ($name as $key => $value) {
      
              echo $value "=>" $value1 ;
              //echo "$value1";
          }
      }
      

      您可以通过组合这两个数组使事情变得更简单,使 $name 数组成为键,$key1 数组成为值

      $newArray = array_combine($name, $key1);
      foreach ($newArray as $name => $key) {
          echo "{$name} =>{$key}";
      }
      

      【讨论】:

      • 这里如果键名相同,那么它只取最后一个值:即:General=>2 和 Dining => 12 和 Kitchen => 18..但我需要所有值
      • 没错,我忘了那个细节,你应该使用@Mureinik 的代码。
      【解决方案4】:

      这对你有用

      <?php 
      $a1= array('General','Outdoors','Dining ');
      $a2= array('1','2','3');
      $newArr=array();
      foreach($a1 as $key=> $val)
      {
          $newArr[$a2[$key]]= $val;
      }
      echo "<pre>"; print_r($newArr); 
      ?>
      

      输出

      Array
      (
          [1] => General
          [2] => Outdoors
          [3] => Dining 
      )
      

      【讨论】:

        【解决方案5】:

        如果您希望将输出作为关联数组作为关联数组中的相同键名是不允许的,恐怕这将是不可能的。如果您正在处理关联数组,它将始终被覆盖。

        虽然你可能有这样的事情:

        array_map(function($key, $val) {return array($key=&gt;$val);}, $name, $key1)

        输出:

        Array ( [0] =&gt; Array ( [General] =&gt; 1 ) [1] =&gt; Array ( [General] =&gt; 2 ) [2] =&gt; Array ( [Outdoors] =&gt; 7 ) [3] =&gt; Array ( [Dining] =&gt; 11 ) [4] =&gt; Array ( [Dining] =&gt; 12 ) [5] =&gt; Array ( [Kitchen] =&gt; 17 ) [6] =&gt; Array ( [Kitchen] =&gt; 18 ) ).

        但是如果你想要字符串格式的输出是可以的

        for ($i = 0; $i < count($key); $i++) { echo $name[$i] . '=>' . $key[$i].'<br>'; }

        【讨论】:

          【解决方案6】:

          只需按如下方式更改 foreach...

          foreach ($key1 as $key => $value1) {
                             echo $name[$key] ."=>". $value1."<br>";
                      } 
          

          如果您通过 linux 终端运行,请将 &lt;br&gt; 替换为 \n。也不要错过 '.' 运算符来连接字符串..

          嵌套的 foreach 无法满足您的需求...祝您好运..

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-11
            • 2021-01-16
            • 2019-01-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多