gpt4 book ai didi

cakephp-2.0 - 使用cakePHP的Hash类从数组中提取数据

转载 作者:行者123 更新时间:2023-12-04 05:04:16 27 4
gpt4 key购买 nike

我有一个像这样的数组:

Array(
[Rating] => Array(
[0] => Array(
[id] => 4
[rating] => -1
),
[1] => Array(
[id] => 14
[rating] => 9.7
),
[2] => Array(
[id] => 26
[rating] => 9.55
)
)
)

我需要从该数组中提取所有大于等于0的评分,并仅提取数字。我用 Set::extract('/Rating/rating[rating>-1]', $video)做得很好

但是我随后了解到,此方法已被弃用,您现在应该使用Hash类。因此,我查找了新语法并写道:
Hash::extract($video, 'Rating.{n}.rating[rating>-1]');

这给了我正确的结果,但是却给出了一个烦人的警告: Warning (4096): Argument 1 passed to Hash::_matches() must be an array, string given, called in E:\www\lib\Cake\Utility\Hash.php on line 131 and defined [CORE\Cake\Utility\Hash.php, line 170]
当我没有条件( [rating>-1])时,不会发生警告,但是当然包括-1,这是我所不希望的。我在这里做错了什么?我会以某种方式滥用此功能吗?我应该只使用不推荐使用的Set类吗?还是我应该忽略警告,因为一旦将该应用程序投入生产模式,警告将不会显示?

最佳答案

这个问题已经很老了,我敢肯定它已经解决了,但是CakePHP文档对于Hash path语法的用法还不太清楚。因此,如果有人遇到了这个问题,这就是我的发现。

问题中的语法不正确。正确的语法是'Hash::extract($ratings, 'Rating.{n}[rating>-1].rating')'

根据文档:“ token 由两组组成。表达式用于遍历数组数据,而匹配项用于限定元素。
{n}[rating>-1]被视为一个 token {n}表达式,它过滤数组键,在这种情况下,键必须是数字。 [rating>-1]匹配器,它过滤数组元素,在这种情况下,该元素必须是一个数组,其中包含一个名为rating的键以及一个大于-1的关联值。一旦有了array元素,就可以得到rating

    $ratings = array(
'Rating' => array(
array(
'id' => 4,
'rating' => -1
),
array(
'id' => 14,
'rating' => 9.7
),
array(
'id' => 26,
'rating' => 9.55
)
)
);
print_r( Hash::extract($ratings, 'Rating.{n}[rating>-1].rating') );

结果是:
Array ( [0] => 9.7 [1] => 9.55 )

关于cakephp-2.0 - 使用cakePHP的Hash类从数组中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12808983/

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