返回数组以查看不起作用

时间:2015-12-10 13:23:00

标签: php arrays laravel

我有一个数组,里面有一些排序的数字。数组就像我想要的那样,所以我把它归还给了我。现在我想进入我的视图(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

1 个答案:

答案 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。