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.

例のように配列のインスタンスが複数ある場合は、それらすべての配列をさらに別のマスター配列にロードし、この配列をラップするさらに別のループを作成することをお勧めします。

私が書いたコードのブロックは、配列例の1つの特定のインスタンスを処理します。

幸運を!

于 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 に答える