拥有这个数组:
Array
(
[_block1] => Array
(
[list] => Array
(
[sub-list] => Array
(
)
)
[links] => Number
[total] => Number
...
)
[_block2] => Array
(
[@attributes] => Array
(
)
[title] => ...
[data] => Array ()
...
)
[_block3] => Array
(
..
)
)
Run Code Online (Sandbox Code Playgroud)
这些块包含api返回的数据.知道每个api以不同的方式/结构返回数据我需要测量/计算每个和其中一个内部的数据/大小,然后做if data > X或做某事.
可能吗?我搜索过谷歌,但我只发现了count(),这不是我需要做的工作.
编辑: 这些块中的每一个都包含许多其他子块,我正在考虑以字节计算数据大小,因为count不会在这里完成工作.
Dav*_*ano 12
如果我理解你的问题,你需要主阵列中每个"块"子阵列的大小.
你可以这样做:
$sizes = array();
foreach($returnedArray as $key => $content) {
$sizes[$key] = count($content);
}
Run Code Online (Sandbox Code Playgroud)
该$sizes数组将是一个关联数组,其中各种"块"作为键,数据大小作为值.
编辑:编辑问题后,如果最内层数组中的数据是字符串或整数,则可以使用如下函数:
function getSize($arr) {
$tot = 0;
foreach($arr as $a) {
if (is_array($a)) {
$tot += getSize($a);
}
if (is_string($a)) {
$tot += strlen($a);
}
if (is_int($a)) {
$tot += PHP_INT_SIZE;
}
}
return $tot;
}
Run Code Online (Sandbox Code Playgroud)
假设只有ASCII编码的字符串.
你的意思是这样的吗?
$x = 32;
foreach($blocks as $key => $block)
{
if(getArraySize($block) < $x)
{
//Do Something
}else
{
//Do another thing
}
}
//Recursive function
function getArraySize($array)
{
$size = 0;
foreach($array as $element)
{
if(is_array($element))
$size += getArraySize($element);
else
$size += strlen($element);
}
return $size;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
要获取以字节为单位的大小,您可以使用以下代码。
$serialized = serialize($foo);
if (function_exists('mb_strlen')) {
$size = mb_strlen($serialized, '8bit');
} else {
$size = strlen($serialized);
}
Run Code Online (Sandbox Code Playgroud)
我希望它会有所帮助。
| 归档时间: |
|
| 查看次数: |
21170 次 |
| 最近记录: |