【问题标题】:How to not echo array if previous one's key has been echoed already如果前一个键已经回显,如何不回显数组
【发布时间】:2013-11-17 22:12:44
【问题描述】:

这是我在阵列上的 print_r($myArray)(包装在 pre 中)之后得到的。

Array
(
    [0] => 203.143.197.254
    [1] => not/available
)
Array
(
    [0] => 40.190.125.166
    [1] => articles/not/a/page
)
Array
(
    [0] => 25.174.7.82
    [1] => articles/not/a/page
)

在这种情况下,我将如何只返回或回显前两个(没有正则表达式),因为我只想输出之前没有回显 [1] 值的每个数组?

我的列表因为更多条目和 $myArray[1] 有时是相同的,我想跳过回显相同的内容。

我尝试了 array_unique,但我无法让它工作,因为 param 1 应该是一个数组。

print_r(array_unique($myArray));

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    这行得通。没有完成完整的复制粘贴工作,但希望您了解逻辑

    $echoed = array();
    foreach($array as $arr) {
        if(!in_array($arr[1],$echoed)) {
            echo $arr[1];
            $echoed[] = $arr[1];
        }
    }
    

    【讨论】:

    • 我理解这种方法,但它不起作用,当我收到 Notice: Uninitialized string offset: 1 时,if 有问题
    • 可能是您使用它的方式。复制和粘贴上面的代码对我来说没有警告/错误(当数组不为空时)
    【解决方案2】:
    $echoedBefore = array();
    print_r(array_filter($myArray, function($entry) {
        global $echoedBefore;
        $alreadyEchoed = in_array($entry[1], $echoedBefore);
        if (!$alreadyEchoed) {
            $echoedBefore[] = $entry[1];
        }
        return !$alreadyEchoed;
    }));
    

    【讨论】:

    • 我收到Warning: in_array() expects parameter 2 to be array, null given in..
    猜你喜欢
    • 1970-01-01
    • 2015-07-23
    • 2013-06-16
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多