2013-02-26 4 views
1

Я пытаюсь использовать массив для поиска значения, находящегося внутри массива, а затем взять полный массив, в котором находится значение, и добавить его в массив. Ниже массив, чтобы получить значение из:Поиск значения внутри массива и получение массива

Array (
    [0] => Array ([ID] => 138 [dimmer] => 5 [order] => 1 [double] => 0 [location1] => DSR [location2] => Stage Pockets) 
    [1] => Array ([ID] => 139 [dimmer] => 6 [order] => 1 [double] => 0 [location1] => DSR [location2] => Stage Pockets) 
    [2] => Array ([ID] => 140 [dimmer] => 7 [order] => 2 [double] => 0 [location1] => DSR [location2] => Stage Pockets) 
    [3] => Array ([ID] => 141 [dimmer] => 8 [order] => 2 [double] => 0 [location1] => DSR [location2] => Stage Pockets) 
) 

Я пытаюсь получить значение dimmer с функцией поиска ниже:

function search($array, $key, $value) 
{ 
    $results = array(); 

    if (is_array($array)) 
    { 
     if (isset($array[$key]) && $array[$key] == $value) 
      $results[] = $array; 

     foreach ($array as $subarray) 
      $results = array_merge($results, search($subarray, $key, $value)); 
    } 

    return $results; 
} 

Под ней используется значение $chan, которое представляет собой целое число в используйте функцию выше для поиска массива. Затем foreach должен пройти через массив, который равен $patch, и выбрать массивы из вышеприведенного массива (только возвращает пустой массив), хотя он не делает этого, если вы не измените $patch_single['dimmer'] на строку, такую ​​как "7".

$patch = search($patch, 'Channel', $chan); 
    foreach ($patch as $patch_single) { 
    print_r($patch_single); 
    $dim_single = intval($patch_single['dimmer']); 
    echo $dim_single; 
    $dimmers = search($dimmers, 'dimmer', $dim_single); 
    } 

массив, который используется для получения $patch_single['dimmer'] есть, когда внутри foreach:

Array ([ID] => 241 [Channel] => 100 [dimmer] => 7) 
Array ([ID] => 242 [Channel] => 100 [dimmer] => 25) 

Спасибо за ваши советы.

ответ

0

Хм, я вижу, что у вас есть 2-мерная массив. Почему вы просто не используете это?

foreach($array as $row) { 
    if ($row['dimmer'] == $myValue) { $newArray[] = $row; } 
} 
0

Попробуйте это:

$arr  = Array (Array ("ID" => 138, "dimmer" => 5, "order" => 1, "double" => 0, "location1" => "DSR", "location2" => "Stage Pockets"), 
        Array ("ID" => 139, "dimmer" => 6, "order" => 1, "double" => 0, "location1" => "DSR", "location2" => "Stage Pockets"), 
        Array ("ID" => 140, "dimmer" => 7, "order" => 2, "double" => 0, "location1" => "DSR", "location2" => "Stage Pockets"), 
        Array ("ID" => 141, "dimmer" => 8, "order" => 2, "double" => 0, "location1" => "DSR", "location2" => "Stage Pockets")); 

$arr  = array_filter($arr, function($ar) { 
    return ($ar['dimmer'] == '7'); 
}); 
echo "<pre>"; 
print_r($arr); 

Выход:

Array 
(
    [2] => Array 
     (
      [ID] => 140 
      [dimmer] => 7 
      [order] => 2 
      [double] => 0 
      [location1] => DSR 
      [location2] => Stage Pockets 
     ) 

) 

исх: http://php.net/manual/en/function.array-filter.php

Смежные вопросы