2012-07-10 56 views
1

我有多个嵌套的数组:如何匹配多个数组?

array(
    [0]=>array('ID'=>123 ,'VALUE'=>value) 
    [1]=>array('ID'=>124 ,'VALUE'=>value) 
    ) 


array(
    [0]=>array('ID'=>123 ,'NAME'=>value) 
    [1]=>array('ID'=>124 ,'NAME'=>value) 
    [2]=>array('ID'=>125 ,'NAME'=>value) 
    ) 

我要找到匹配,例如:

if(ID=123)我应该得到的ID,值,并命名。

回答

0

在这里,你会想要使用的情况下,PHP的内置multidimensional array features

$outputArray = array(); // Create an output array. 

foreach ($array as $innerArray) // Assuming $array is an example of one of your arrays above. 
// Iterate through each inner array in list and load it temporarily into $innerArray. 
{ 
    if ($innerArray['ID'] == 123) // Your condition, checking for the value of key 'ID'. 
    { 
     $outputArray['ID'] = $innerArray['ID']; // The temporary inner array is loaded to the $outputArray variable. 
     foreach ($innerArray as $name => $value) // Iterate through inner array. 
     { 
      if ($name !== 'ID') // If the key of the inner array is not 'ID' then handle this key => value pair. 
      { 
       $outputArray['Name'] = $name; 
       $outputArray['Value'] = $value; 
      } 
     } 
     break; // Break the loop if you know that there can be only 1 array with 'ID' => 123 
    } 
} 

print_r($outputArray); // You can now access that particular array you wanted. 

如果有阵列的多个实例,就像在你的榜样,你可能会想加载所有这些阵列进入另一个主数组,然后编写另一个循环来环绕这个数组。

我写的代码块处理数组示例的一个特定实例。

祝你好运!

0

http://ideone.com/hiCRZ

$a = array(
    array('ID'=>123 ,'VALUE'=>'123 value'), 
    array('ID'=>222 ,'VALUE'=>'222 value') 
); 

$b = array(
    array('ID'=>123 ,'NAME'=>'123 name'), 
    array('ID'=>124 ,'NAME'=>'124 name'), 
    array('ID'=>125 ,'NAME'=>'125 name') 
); 

$c = array(); 

foreach($a as $row){ 
    $c[ $row['ID'] ]['ID'] = $row['ID']; // stupid way to ensure target array :) 
    $c[ $row['ID'] ] += $row; 
} 

foreach($b as $row){ 
    $c[ $row['ID'] ]['ID'] = $row['ID']; 
    $c[ $row['ID'] ] += $row; 
} 

var_dump($c); 

结果:

array(4) { 
    [123]=> 
    array(3) { 
    ["ID"]=> 
    int(123) 
    ["VALUE"]=> 
    string(9) "123 value" 
    ["NAME"]=> 
    string(8) "123 name" 
    } 
    [222]=> 
    array(2) { 
    ["ID"]=> 
    int(222) 
    ["VALUE"]=> 
    string(9) "222 value" 
    } 
    [124]=> 
    array(2) { 
    ["ID"]=> 
    int(124) 
    ["NAME"]=> 
    string(8) "124 name" 
    } 
    [125]=> 
    array(2) { 
    ["ID"]=> 
    int(125) 
    ["NAME"]=> 
    string(8) "125 name" 
    } 
} 

如果你想找到1个ID数据:

$id = 123; 
$result_row = array(); 

foreach($a as $row) if($row['ID'] == $id) { 
    $result_row += $row; 
} 

foreach($b as $row) if($row['ID'] == $id){ 
    $result_row += $row; 
} 

var_dump($result_row); 

结果:

array(3) { 
    ["ID"]=> 
    int(123) 
    ["VALUE"]=> 
    string(9) "123 value" 
    ["NAME"]=> 
    string(8) "123 name" 
}