我有一个数组,里面有一些排序的数字。数组就像我想要的那样,所以我把它归还给了我。现在我想进入我的视图(html)数组的输出和php说:htmlentities()期望参数1是字符串,给定数组
这是我的第一个问题..第二个问题是,我希望我的数组中的输出彼此...
喜欢:
number
number
number
number
.....
但是它在输出中只有number number number number
..
我真的需要这个用于我的项目,而且我需要的东西......只是输出格式不正确
这是控制器中的代码:
$mb_bytes = array();
foreach ($topTenIp as $val) {
$bytes_ips[$val] = shell_exec("grep $val /path/file | awk '{print $10}'");
$add = array_sum(explode("\n", $bytes_ips[$val]));
$add = $add / 1024 / 1024;
$add = round($add, 2);
array_push($mb_bytes, $add);
}
if($mb_bytes)
arsort($mb_bytes);
$ pb_bytes中的是我想要的数字
这里是我的HTML:
@foreach($topTenIp as $ip[$i])
<tr>
<th>{{ $ip[$i] }}</th>
<th>{{ here should be the variable mb_bytes }}</th>
</tr>
@endforeach
将变量传递给视图:
return view('/domains/data', [
'mb_bytes' => $mb_bytes,
'topTenIp' => $topTenIp,
]);
我之前问过这个并得到了很大的帮助,但它仍然不想工作..
我希望今天能有更多的运气:D
答案 0 :(得分:0)
已更新以支持已排序的数组
首先,您必须以某种方式构建数据,以便循环结果属于IP地址。如果不这样做,如果您对其中一个进行排序,您的阵列将处于不同的顺序。 您可以将IP和字节添加到二维关联数组中,并对其进行排序:
$ipsWithBytes = [];
foreach ($topTenIp as $val)
{
$execResult = shell_exec("grep $val /path/file | awk '{print $10}'");
$add = array_sum(explode("\n", $execResult));
$add = $add / 1024 / 1024;
$add = round($add, 2);
$ipsWithBytes[] = [ // use the [] notation instead of array_push()
'ip' => $val,
'bytes' => $add,
];
}
uasort($ipsWithBytes, function($a, $b) { // sort the array descending
if ($a['bytes'] == $b['bytes'])
{
return 0;
}
elseif ($a['bytes'] < $b['bytes'])
{
return 1;
}
else
{
return -1;
}
});
return view('my_view', compact('ipsWithBytes'));
请注意,使用PHP 7时,您可以使用新的太空船操作符对数组进行排序:
uasort($ipsWithBytes, function($a, $b) {
return $b['bytes'] <=> $a['bytes']; // $b first, so it sorts descending
});
最后,您的刀片应如下所示:
@foreach($ipsWithBytes as $item)
<tr>
<td>{{ $item['ip'] }}</td>
<td>{{ $item['bytes'] }}</td>
</tr>
@endforeach
澄清htmlentities错误的含义:
刀片中的双花括号被编译为<?php echo htmlentities($var); ?>
。 htmlentities()期望参数1的类型为string,但在您的情况下,$var
的类型为array。