【发布时间】:2013-01-30 17:14:48
【问题描述】:
(
[1] => Array
(
[rules_properties_id] => 1
[operator] => >=
[value] => 2
[function] => NumOrdersPlaced
[rules_properties_params] => Array
(
[num_days] => 30
[customer_id] => 5
)
)
[2] => Array
(
[rules_properties_id] => 1
[operator] => >=
[value] => 5
[function] => NumOrdersPlaced
[rules_properties_params] => Array
(
[num_days] => 90
[customer_id] => 5
)
)
[3] => Array
(
[rules_properties_id] => 2
[operator] => >
[value] => 365
[function] => CustAcctAge
[rules_properties_params] => Array
(
[customer_id] => 5
)
)
)
这是我从数据库中取回的数组的print_r。我需要找到包含名为 NumOrdersPlaced 的函数的子数组的索引号(预期结果为 2。)这是通过循环遍历数组和子数组并进行比较的唯一方法(如this answer) ?还是有我不知道的更高效、更优雅(即单行)的功能?
【问题讨论】:
-
你用过array_search吗?
-
@raina77ow - 抱歉,这是我们填充数据库时的剪切和粘贴。实际上永远不会有两个包含相同函数的子数组。但这带来了一个有趣的观点。如果有两个包含相同的内容,我希望它返回一个索引号数组,在本例中为 1 和 2。
-
@AkamOmer - 不,我没有尝试过,因为如上所述,这是一个多维数组。我不想遍历子数组并在每个子数组上调用 array_search。
-
我可能会在这里使用
array_filtergrep 带有isset($el['function']) && $el['function'] === 'NumOrdersPlaced'的所有项目,然后收集结果数组的键。 -
php 不直接支持搜索多维数组。您必须遍历子数组并手动搜索每个子数组。
标签: php arrays multidimensional-array