gpt4 book ai didi

PHP - 计算数组中匹配的数组

转载 作者:行者123 更新时间:2023-12-02 17:31:11 25 4
gpt4 key购买 nike

我有一个如下所示的数组结构:

    Array
(
[0] => Array
(
[type] => image
[data] => Array
(
[id] => 1
[alias] => test
[caption] => no caption
[width] => 200
[height] => 200
)

)

[1] => Array
(
[type] => image
[data] => Array
(
[id] => 2
[alias] => test2
[caption] => hello there
[width] => 150
[height] => 150
)

)

)

我的问题是,如何获得类型设置为图像(或其他任何相关内容)的嵌入式数组的数量?实际上,这个值可能会有所不同。

所以,上面的数组会给我答案 2。

谢谢

最佳答案

最简单的方法就是循环遍历所有子数组并检查它们的类型,如果它与所需的类型匹配,则增加计数器。

$count = 0;
foreach ( $myarray as $child ){
if ( $child['type'] == 'image' ){
$count++;
}
}

如果您有 PHP 5.3.0 或更高版本,您可以使用 array_reduce(未经测试):

$count = array_reduce($myarray, 
function($c, $a){ return $c + (int)($a['type'] == 'image'); },
0
);

这两个都可以移动到返回 $count 的函数中,这将允许您指定要计数的类型。例如:

function countTypes(array $haystack, $type){
$count = 0;
foreach ( $haystack as $child ){
if ( $child['type'] == $type ){
$count++;
}
}
return $count;
}

正如您从其他答案中看到的那样,您可以进行更多的错误检查,但是您没有说什么是不可能的(您希望使用 assert 来实现)。

可能的错误是:

  • 子级不是数组
  • 子项确实设置了 type

如果您的数组应始终像您的示例一样设置,那么静默失败(通过在 if 语句中进行检查)将是一个坏主意,因为它会掩盖程序中其他地方的错误。

关于PHP - 计算数组中匹配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2662988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com