2015-01-24 3 views
-3

У меня есть массив, состоящий из массивов. Посмотрите этот файл gist.
Как вы можете видеть, что каждый массив повторяется два раза. Мне нужно удалить второй, мне нужно сравнить их по значению массива 'key'.
Спасибо!удалить элементы из массива, где значение дочернего массива равно

+1

что именно вы спрашиваете? также пожалуйста, покажите свой код – NoLiver92

+0

очень смутное описание – pbaldauf

+0

, пожалуйста, разместите свой код в своем вопросе, давая ссылки не полезно, как когда другие пользователи переходят к рассмотрению этого вопроса в будущем, ссылка может не существовать, и она не поможет никому. SO дают вам инструменты для публикации кода, поэтому, пожалуйста, используйте их – NoLiver92

ответ

0

Ошибка неопределенного смещения 6 сообщает вам, что в позиции 6 нет элемента массива. Не видя сообщение об ошибке и код, я не могу сказать вам, где ошибка. Но вам нужно будет увидеть, существует ли элемент, используя что-то как это:

if (isset($array[index])) 
{ 
    //do something 
} 

Это будет обрабатывать ошибку, а значит, вы не получите сообщение, но вы должны понять, почему элемент оленья кожа существовать, как был ли проблема, когда были сделаны массивы.

Ваше сообщение об ошибке сообщит вам, в какой строке была проблема, и поэтому какие переменные массива вызывают эти ошибки.

UPDATE:

ваш код всегда возвращает истину, как вы сравниваете значение само по себе, следовательно, это будет пустой массив.

$transll['key'] == $transll['key'] 
+0

Я обновляю свой вопрос, смотрю интуитивный файл, пожалуйста) – nowiko

+0

@Panzer_Commander вы просто показали мне тот же пример массива. Вам нужно показать полное сообщение об ошибке и код, который вы запускали, когда вы получили сообщение об ошибке, так как петли foreach – NoLiver92

+0

здесь является gist-файлом, и нет ошибок, он просто возвращает пустой массив https: //gist.github. com/NovikovViktor/7e25b2486b19bc08014c – nowiko

1

Самый простой способ, чтобы получить результат, который вы ожидаете, на мой взгляд, этот способ:

$data = array(
    array(
     'domain' => 'messages', 
     'key' => 'test.testik', 
     'message' => array() 
    ), 
    array(
     'domain' => 'messages', 
     'key' => 'test2313.tes31231tik', 
     'message' => array() 
    ), 
    array(
     'domain' => 'validators', 
     'key' => 'valid.validik', 
     'message' => array() 
    ), 
    array(
     'domain' => 'validators', 
     'key' => 'joga.jimbo', 
     'message' => array() 
    ), 
    array(
     'domain' => 'validators', 
     'key' => 'valid.validik', 
     'message' => array() 
    ) 
); 
$newdata = array(); 

foreach ($data as $subdata) { 
    $newdata[$subdata['key']] = $subdata; 
} 

$newdata = array_values($newdata); // reset array indizes 

print_r($newdata); 
Смежные вопросы