2012-03-30 3 views
3

МассивImplode внутренний массив значений

Array 
(
    [0] => Array 
    (
     [Detail] => Array 
     (
      [detail_id] => 1 
     ) 

    ) 

    [1] => Array 
    (
     [Detail] => Array 
     (
      [detail_id] => 4 
     ) 

    ) 

) 

Можно ли использовать функцию взрывать с выше массива, потому что я хочу, чтобы взрывать detail_id получить 1,4.

Я знаю, что это возможно с помощью Еогеаспа и добавления значения массива, но хочет знать, это делается с помощью функции лопается или любой другой встроенной функцией в PHP

ответ

2

Если вам нужно использовать некоторую логику - то array_reduce это то, что вам нужно

$result = array_reduce($arr, function($a, $b) { 
    $result = $b['Detail']['detail_id']; 

    if (!is_null($a)) { 
     $result = $a . ',' . $result; 
    } 

    return $result; 
}); 

PS: для PHP < = 5.3 вам нужно создать отдельную функцию обратного вызова для этого

+0

Если мы используем длинный массив, будет ли это замедлить процесс. –

+0

@ Jusnit, пожалуйста, проверьте мой ответ. – rajmohan

+1

@Jusnit: для длинного массива array_reduce() будет намного быстрее и эффективнее памяти, чем решение rajmohan. Это связано с тем, что, в отличие от array_map(), для выполнения задания не требуется промежуточный массив. – Tadeck

0
<?php 

$array = array(
    array('Detail' => array('detail_id' => 1)), 
    array('Detail' => array('detail_id' => 4)),); 

$newarray = array(); 

foreach($array as $items) { 
    foreach($items as $details) { 
     $newarray[] = $details['detail_id']; 
    } 
} 

echo implode(', ', $newarray); 

?> 
2

Пожалуйста, проверьте этот ответ.

$b = array_map(function($item) { return $item['Detail']['detail_id']; }, $test); 

echo implode(",",$b); 
+1

К сожалению, я по ошибке подтвердил ваш ответ. Этот ответ неверен. – Tadeck

+0

Спасибо @Tadeck. Пожалуйста, проверьте этот ответ. – rajmohan

3

А что-то вроде следующего, используя join():

echo join(',', array_map(function ($i) { return $i['Detail']['detail_id']; }, $array)); 
Смежные вопросы