0

我刚刚看到了从数组[here]中删除多于 2 位小数的数字的方法。问题是当我尝试使用 echo 而不是 var_dump 格式化输出时:

$line = 1;
for($i = 1; $i < count($value1); $i++){
    echo "$line | ".$value1[$i][0]." | ".$value1[$i][1]." | ".$value1[$i][2]." | ".$value1[$i][3]." | ".$value1[$i][4].'<br>';
    $line = $line + 1;
}

我到处都是“注意:未定义的偏移量:”。有没有办法重置数组中的行?

我需要用“echo”格式化它的原因是我可以直接复制输出并将其粘贴到文档中,而不必从“var_dump”中删除不必要的字符。我做错了吗?

提前谢谢...

提前谢谢。

4

4 回答 4

2

使用内爆而不是不方便的连接怎么样?

<?php
foreach ($value1 as $counter => $line){
    echo ($counter + 1) . " | ". implode(" | ", $line) . '<br>';
}

这样,可以确保仅连接现有值。如果您仍想从数组中删除元素,您可以考虑检查它们是否为空,然后使用unset

于 2012-11-11T21:06:45.593 回答
1

我不知道数组的样子,但您在代码中肯定遇到的一个错误是:

for($i = 1; $i < count($value1); $i++)

在 PHP 中,数组以 index 开头0,您需要像这样更正您的代码:

for($i = 0; $i < count($value1); $i++)

或使用更容易的foreach 。

于 2012-11-11T21:09:05.043 回答
1

解决了。之后:

function decimalFilter($v) {
        foreach ( $v as $x ) {
            if (strlen(substr(strrchr($x, "."), 1)) > 2)
                return false;
        }
        return true;
    }
$value = array_filter($value, "decimalFilter");

然后我补充说:

sort($value);

其次是:

for($i = 1; $i < count($value); $i++){
    echo $value[$i][0]." | ".$value[$i][1]." | ".$value[$i][2]." | ".$value[$i][3]." | ".$value[$i][4].'<br>';
}

丢失的元素在输出过程中消失了。事情是我不知道这是否是一种实用的方法。

于 2012-11-11T21:18:15.590 回答
1

您可以使用几种方法来删除或忽略数组元素,而无需 PHP 抛出通知:

$line = 1;
for($i = 1; $i < count($value1); $i++){
if( isset( $value[$i][0]) === TRUE && isset( $value[$i][1]) === TRUE && isset( $value[$i][2]) === TRUE && isset( $value[$i][3]) === TRUE && isset( $value[$i][4]) === TRUE )
{
    echo "$line | ".$value1[$i][0]." | ".$value1[$i][1]." | ".$value1[$i][2]." | ".$value1[$i][3]." | ".$value1[$i][4].'<br>';
}

    $line = $line + 1;
}

或者您可以使用 count($value[$i][0]) > 0 来确保数组包含一个值。

于 2012-11-11T21:30:43.117 回答