Как удалить строки с пустыми элементами из многомерного массива в PHP?
Например, от:
1: a, b, c, d 2: d, _, b, a 3: a, b, _, _ 4: d, c, b, a 5: _, b, c, d 6: d, c, b, a
до
1: a, b, c, d 4: d, c, b, a 6: d, c, b, a
Спасибо!
$arr = array(... your multi dimension array here ...); foreach($arr as $idx => $row) { if (preg_grep('/^$/', $row)) { unset($arr[$idx]); } }
Используйте этот код:
$source = array( array('a', 'b', 'c', 'd'), array('d', '_', 'b', 'a'), array('a', 'b', '_', '_'), array('d', 'c', 'b', 'a'), array('_', 'b', 'c', 'd'), array('d', 'c', 'b', 'a'), ); $sourceCount = count($source); for($i=0; $i<$sourceCount; $i++) { if(in_array("_", $source[$i])) unset($source[$i]); }
См .: http://ideone.com/Vfd6Z
Попробуйте:
Примечание: $ arr - это ваш массив.
foreach ( $arr as $key => $line ) { foreach ( $line as $item ) { if ( empty( $item ) ) { unset( $arr[$key] ); break; } } }
Приветствия
Я бы сам повторил цикл foreach примерно так:
<?php // Let's call our multidimensional array $md_array for this foreach ($md_array as $key => $array) { $empty_flag = false; foreach ($array as $key => $val) { if ($val == '') { $empty_flag = true; } } if ($empty_flag == true) { unset($md_array[$key]); } } ?>
Почти наверняка есть более эффективный способ сделать это, так что любой, кто имеет лучшее решение, не стесняется сообщить мне и Алексу об этом.
Переберите многомерный массив и проверьте, содержит ли массив в позиции i пустые элементы.Если это так, позвоните unset($arr[i]), чтобы удалить его.
i
unset($arr[i])
for($i=0,$size=sizeof($arr); $i < $size; $i++) { if( in_array( "", $arr[$i] ) ) unset( $arr[$i] ); }