2016-05-11 2 views
0

У меня есть вопрос. Предположим, у меня есть массив как это:Получите массив из многомерного значения

Array 
(
    [0] => Array 
     (
      [id] => 4 
      [name] => test 
      [surname] => test1 
     ) 
    [1] => Array 
     (
      [id] => 6 
      [name] => test4 
      [surname] => test5 
     ) 
) 

Мне нужно, чтобы получить все данные для массива с помощью id. Так, например, если я хочу, чтобы получить данные для id=4 мне нужно получить массив так:

Array 
(
    [id] => 4 
    [name] => test 
    [surname] => test1 
) 

Я попытался с array_column, но не работает. Пожалуйста, помогите мне

+6

* Я попытался с array_column * Покажите, что код. Вероятно, вы ближе к решению, чем думаете. – Rizier123

+0

Правильно, вы близко к месту назначения. –

+0

@HareaCosticla, ваш ответ готов к [Ответ] (http://stackoverflow.com/questions/37156500/get-an-array-from-multidimensional-by-a-value/37156674#37156620) –

ответ

0

С помощью array_combine()array_column() &

$array = array 
(
    '0' => array 
     (
      'id' => 4, 
      'name' => 'test', 
      'surname' => 'test1', 
     ), 
    '1' => array 
     (
      'id' => 6, 
      'name' => 'test4', 
      'surname' => 'test5', 
     ) 
);  
// Create array as id as index 
$temp = array_combine(array_column($array, 'id'), $array); 
// get the sub array 
$new = $temp[4]; 
var_dump($new); 

Другой простой способ будет -

$new = array(); 

foreach($array as &$v) { 
    if($v['id'] == 4) { 
     $new = $v; 
     break; 
    } 
} 

var_dump($new); 

Выход

array(3) { 
    ["id"]=> 
    int(4) 
    ["name"]=> 
    string(4) "test" 
    ["surname"]=> 
    string(5) "test1" 
} 
+0

Почему со ссылкой? И перерыв будет хорошим. – KiwiJuicer

+0

@KiwiJuicer Спасибо за 'break' !! :) –

+0

@Sougata, Что я могу сказать о вас? Вы делаете ответ, а затем отмечаете это как дубликат !!! –

0

Вы должны должны иметь цикл и проверка, является ли идентификатор вспомогательного массива вашим поиском id или нет, если он затем хранит, затем подбирает массив и прерывает.

$arr = array(
      array('id' => 4, 'name' => 'test', 'surname' => 'test1'), 
      array('id' => 6, 'name' => 'test4', 'surname' => 'test5') 
     ); 

$id = 4; 
$out = array(); 
foreach($arr as $val){ 
    if($val['id'] == $id){ 
     $out = $val; 
     break; 
    } 

} 
echo '<pre>'; 
print_r($out); 

Проверьте это: Online check

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

  • Нет связанных вопросов^_^