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、值和名称。

4

2 回答 2

0

在这种情况下,您会想要使用 PHP 内置的多维数组功能

$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.

如果您有多个数组实例,就像您的示例一样,您可能希望将所有这些数组加载到另一个主数组中,并编写另一个循环来环绕这个数组。

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

祝你好运!

于 2012-07-10T05:06:20.110 回答
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"
}
于 2012-07-10T05:12:54.600 回答