2013-04-03 2 views
1

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

array(
     array(1,'this'), 
     array(2,'that'), 
     array(1,'andthat') 
) 

Так, к примеру, я должен был бы удалить оба массивы, которые имеют 1 в качестве первого значения.

Как мне это сделать?

ответ

1

Вероятно, это легче читать:

foreach($a as $i => $item) 
    if($item[0]==1) 
     unset($a[$i]); 

где $a является массивом, $item является subarray, $i - это индекс массива

+0

Это сделало именно то, что я хотел. Благодаря! –

+0

@gdscei Рад, что голова! – 2013-04-03 12:13:47

4

Чтобы сделать это, вы можете использовать array_filter().

$newArray = array_filter($arr, function($arr) { return $arr[0] != 1; }); 

CodePad.

+0

Это идеальное решение, спасибо! –

+0

как я мог бы также фильтровать как первое, так и второе значение? –

+1

@gdscei Используйте оператор 'AND' в теле функции. – alex

0

я проверил это для предотвращения дублирования массива, может это поможет ...

<?php 
function func($array) 
{ 
    $result = array_map("unserialize", array_unique(array_map("serialize", $array))); 

    foreach ($result as $key => $value) 
    { 
    if (is_array($value)) 
    { 
     $result[$key] = func($value); 
    } 
    } 

    return $result; 
} 
?> 
Смежные вопросы