从php中的多维数组中删除具有空值的行

发布于 2024-11-27 23:09:40 字数 245 浏览 0 评论 0原文

如何从 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

谢谢!

How do you remove the lines that have empty elements from a multidimensional-array in PHP?

For instance, from:

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

to

1: a, b, c, d
4: d, c, b, a
6: d, c, b, a

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

旧人哭 2024-12-04 23:09:40
$arr = array(... your multi dimension array here ...);
foreach($arr as $idx => $row) {
    if (preg_grep('/^$/', $row)) {
        unset($arr[$idx]);
    }
}
$arr = array(... your multi dimension array here ...);
foreach($arr as $idx => $row) {
    if (preg_grep('/^$/', $row)) {
        unset($arr[$idx]);
    }
}
夜雨飘雪 2024-12-04 23:09:40

使用此代码:

$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

Use this code:

$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]);
}

See: http://ideone.com/Vfd6Z

欲拥i 2024-12-04 23:09:40

循环遍历多维数组并检查位置 i 处的数组是否包含任何空元素。如果存在,请调用 unset($arr[i]) 将其删除。

for($i=0,$size=sizeof($arr); $i < $size; $i++) {
    if( in_array( "", $arr[$i] ) )
        unset( $arr[$i] );
}

Loop through the multidimensional array and check to see if the array at position i contains any empty elements. If it does, call unset($arr[i]) to remove it.

for($i=0,$size=sizeof($arr); $i < $size; $i++) {
    if( in_array( "", $arr[$i] ) )
        unset( $arr[$i] );
}
任性一次 2024-12-04 23:09:40

我会自己迭代一个 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 would iterate through a foreach loop myself something like:

<?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]);
        }
    }
?>

There's almost definitely a more efficient way of doing this so anyone else who has a better solution feel free to let me and Alex know.

一曲琵琶半遮面シ 2024-12-04 23:09:40

试试这个:

注意:$arr 是你的数组。

foreach ( $arr as $key => $line ) {

    foreach ( $line as $item ) {

        if ( empty( $item ) ) {

            unset( $arr[$key] );
            break;
        }

    }

}

干杯

Try this:

Note: $arr is your array.

foreach ( $arr as $key => $line ) {

    foreach ( $line as $item ) {

        if ( empty( $item ) ) {

            unset( $arr[$key] );
            break;
        }

    }

}

Cheers

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文