2016-03-04 91 views
1

我的阵列如何使用按键得到两个数组的数组值

$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 
+0

'foreach($ name as $ key => $ value){echo $ value“=>”$ key1 [$ key];}' – splash58

+0

每个'foreach'将乘以结果的数量在嵌套设置。所以,在你的代码中你会有'36'输出。只需使用foreach一次。 – xRahul

回答

4

你只需要遍历一个数组,而不是两者的形式:

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

谢谢Mureinik .. :)它适用于我.. –

1

您可以使用一个简单的for循环来做到这一点

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

与您的代码的问题是你使用相同的变量$key两个foreachs,所以最后一个覆盖值。

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}"; 
} 
+0

在这里,如果键具有相同的名称,那么它只需要最后一个值:即:一般=> 2和餐饮=> 12和厨房=> 18 ..但我需要所有值 –

+0

没错,我忘了那个细节,你应该比使用@Mureinik的代码。 –

1

这会为你

<?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 
) 
1

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

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

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

输出:

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

但是,如果你想以字符串格式输出这可能是

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

1

只要改变的foreach如下...

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

\n更换<br>,如果你通过Linux终端上运行。另外,不要错过'.'运算符连接字符串..

嵌套的foreach不会做你所需要的...祝你好运..

相关问题