【问题标题】:Array items being echoed with no command in foreach loop [closed]在foreach循环中没有命令回显数组项目[关闭]
【发布时间】:2013-03-30 23:05:00
【问题描述】:

我正在使用一个多维数组,其中将包含可变数量的空对象。我编写了一个脚本来简单地 unset() 空的,它工作正常。然而,即使没有 echo() 函数,当我的循环运行时,非空值也会被打印出来,我似乎无法弄清楚为什么。

在我的循环中使用的数组示例:

Array
(
[0] => Group Object
    (
        [_title] => <strong>Abdomen</strong><ul>
        [_issues] => <li><strong>Ascites</strong>: 1</li><li><strong>Blood Clot</strong>: 2</li>
    )

[1] => Group Object
    (
        [_title] => <strong>Air Sac</strong><ul>
        [_issues] => <li><strong>Cloudy</strong>: 1</li>
    )

[2] => Group Object
    (
        [_title] => <strong>Beak Treatment</strong><ul>
        [_issues] => <li><strong>Severe</strong>: 3</li>
    )

[3] => Group Object
    (
        [_title] => 
        [_issues] => 
    )

[4] => Group Object
    (
        [_title] => 
        [_issues] => 
    )

[5] => Group Object
    (
        [_title] => <strong>Crop</strong><ul>
        [_issues] => <li><strong>Impacted</strong>: 2</li>
    )

[6] => Group Object
    (
        [_title] => <strong>Feathering</strong><ul>
        [_issues] => <li><strong>Soiled</strong>: 1</li>
    )

[7] => Group Object
    (
        [_title] => <strong>Feet</strong><ul>
        [_issues] => <li><strong>Swollen</strong>: 1</li>
    )

[8] => Group Object
    (
        [_title] => 
        [_issues] => 
    )

[9] => Group Object
    (
        [_title] => 
        [_issues] => 
    )

[10] => Group Object
    (
        [_title] => <strong>Heart</strong><ul>
        [_issues] => <li><strong>Compromised</strong>: 1</li>
    )

[11] => Group Object
    (
        [_title] => <strong>Hock</strong><ul>
        [_issues] => <li><strong>Clear Exudate</strong>: 2</li>
    )

[12] => Group Object
    (
        [_title] => 
        [_issues] => 
    )

[13] => Group Object
    (
        [_title] => 
        [_issues] => 
    )

[14] => Group Object
    (
        [_title] => 
        [_issues] => 
    )

[15] => Group Object
    (
        [_title] => <strong>Kidney</strong><ul>
        [_issues] => <li><strong>Injured</strong>: 2</li>
    )

)

foreach() 循环清除数组内的空对象:

foreach ($issues as $key => $link) {
            if ($issues[$key] != '') {
        unset($issues[$key]);   
    }
  }

最后,循环运行时打印的输出:

<strong>Abdomen</strong><ul>
    <li><strong>Ascites</strong>: 1</li>
    <li><strong>Blood Clot</strong>: 2</li>
<strong>Air Sac</strong><ul>
    <li><strong>Cloudy</strong>: 1</li>
<strong>Beak Treatment</strong><ul>
    <li><strong>Severe</strong>: 3</li>
<strong>Crop</strong><ul>
    <li><strong>Impacted</strong>: 2</li>
<strong>Feathering</strong><ul>
    <li><strong>Soiled</strong>: 1</li>
<strong>Feet</strong><ul>
    <li><strong>Swollen</strong>: 1</li>
<strong>Heart</strong><ul>
    <li><strong>Compromised</strong>: 1</li>
<strong>Hock</strong><ul>
    <li><strong>Clear Exudate</strong>: 2</li>
<strong>Kidney</strong><ul>
    <li><strong>Injured</strong>: 2</li>

显然,我只想删除空组并且不打印任何内容。任何帮助表示赞赏。

【问题讨论】:

  • 也就是说你需要给我们展示更多的代码,用你提供的代码,不可能有输出……

标签: php multidimensional-array foreach


【解决方案1】:

按照here的建议,您可以使用array_filter

class Foo {

    public $bar;

    public function __construct($arg)
    {
        $this->bar = $arg;
    }

    public function isEmpty()
    {
        if (is_string($this->bar) && !empty($this->bar))
        {
            return false;
        }

        return true;
    }

}

$array = array(
    new Foo(29),
    new Foo(''),
    new Foo('hello'),
    new Foo(null),
    new Foo('world'),
);

function obj_is_empty($obj)
{
    return ( ! $obj->isEmpty() );
}

print "<pre>";
var_dump(array_filter($array, "obj_is_empty"));

工作正常

【讨论】:

    【解决方案2】:

    我可能是错的,但你的数组应该有用引号括起来的项目:

        [_title] => "<strong>Abdomen</strong><ul>"
    

    否则,未来的一切都是不可预知的。

    【讨论】:

      【解决方案3】:

      您正在检查数组keys(_title,_issues),而不是values(腹部等)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-06
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        相关资源
        最近更新 更多