У меня есть этот массив:
array(5) {
[0]=>
array(4) {
["nachricht"]=>
string(9) "blablaaaa"["user"]=>
string(15) "334607943355808"["datum"]=>
string(16) "18.09.2014 11:13"["deleted"]=>
string(0) ""}
[1]=>
array(4) {
["nachricht"]=>
string(3) "joo"["user"]=>
string(15) "334607943355808"["datum"]=>
string(16) "18.09.2014 11:56"["deleted"]=>
string(15) "334607943355808"}
[2]=>
array(4) {
["nachricht"]=>
string(4) "noma"["user"]=>
string(15) "334607943355808"["datum"]=>
string(16) "18.09.2014 11:56"["deleted"]=>
string(0) ""}
[3]=>
array(4) {
["nachricht"]=>
string(4) "test"["user"]=>
string(15) "334607943355808"["datum"]=>
string(16) "18.09.2014 11:56"["deleted"]=>
string(0) ""}
[4]=>
array(4) {
["nachricht"]=>
string(4) "doh!"["user"]=>
string(15) "334607943355808"["datum"]=>
string(16) "18.09.2014 11:56"["deleted"]=>
string(0) ""}
}
Я хочу удалить все вложенные массивы, которые включают значение 334607943355808 в ключе «удалено» в вложенном массиве. Я получил этот код:
if(($key = array_search("334607943355808", $array)) !== false) {
unset($array[$key]);
}
от: PHP массив удалить по значению (не ключу) где это не мульти-массив, но как я могу сделать это в моем случае?
РЕДАКТИРОВАТЬ:
Я попробовал это так сейчас:
foreach($array as $delete){
if(($key = array_search("334607943355808", $delete)) !== false) {
unset($delete[$key]);
}
}
Но это не работает
Просто простой foreach
со ссылкой на вложенный массив:
foreach($array as &$sub_array) {
if($sub_array['deleted'] == '334607943355808') {
$sub_array = null;
break; //if there will be only one then break out of loop
}
}
Или по ключу в основном массиве:
foreach($array as $key => $sub_array) {
if($sub_array['deleted'] == '334607943355808') {
unset($array[$key]);
break; //if there will be only one then break out of loop
}
}
Вы также можете извлечь deleted
значения, поиск и сброс по ключу:
if(($key = array_search('334607943355808',
array_column($array, 'deleted'))) !== false) {
unset($array[$key]);
}
Ты можешь использовать array_map()
.Попробуй это
$finalArr = array_map(function($v){
if($v['deleted'] == '334607943355808') unset($v['deleted']);
return $v;
}, $arr);