我刚刚看到了从数组[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”中删除不必要的字符。我做错了吗?
提前完成了......
提前完成。
答案 0 :(得分:2)
使用implode而不是unhandy concatenation呢?
<?php
foreach ($value1 as $counter => $line){
echo ($counter + 1) . " | ". implode(" | ", $line) . '<br>';
}
这样,可以确保只连接现有值。如果您仍想从数组中删除元素,可以考虑检查它们是否为空,然后使用unset。
答案 1 :(得分:1)
我不知道数组的外观,但您在代码中遇到的一个错误是:
for($i = 1; $i < count($value1); $i++)
在PHP中,数组以索引0
开头,您需要更正这样的代码:
for($i = 0; $i < count($value1); $i++)
或使用foreach这更容易。
答案 2 :(得分: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>';
}
输出过程中缺失的元素消失了。如果这是一个实用的方法,那我就不知道了。
答案 3 :(得分: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])&gt; 0以确保数组包含值。