【发布时间】:2018-03-06 14:28:13
【问题描述】:
考虑从 API 返回的以下数组:
$arr = Array
(
[A] =>
[C] =>
[D] =>
[EE] => Array
(
[0] => Array
(
[B] =>
[C] => 2.06
[O] =>
[P] => 0
[T] => 1
)
[1] => Array
(
[B] =>
[C] => 2.56
[O] =>
[P] => 0
[T] => 2
)
[2] => Array
(
[B] =>
[C] => 4.94
[O] =>
[P] => 0
[T] => 3
)
[3] => Array
(
[B] =>
[C] => 1.42
[O] =>
[P] => 1
[T] => 9
)
[4] => Array
(
[B] =>
[C] => 2.83
[O] =>
[P] => 1
[T] => 10
)
[5] => Array
(
[B] =>
[C] => 2.13
[O] =>
[P] => 1.5
[T] => 9
)
[6] => Array
(
[B] =>
[C] => 1.7
[O] =>
[P] => 1.5
[T] => 10
)
)
)
我想从 P 为 1.5 且 T 为 9 的子数组中获取 C 值。显然,如果我知道这将始终位于索引为 5 的子数组中,我可以这样做:
$arr['EE'][5]['C'];
但 5 并不总是该特定数组的索引。所以我正在寻找更多类似的东西:
$arr['EE'][...P is 1.5 and T is 9...]['C'];
这是在处理数千个这样的数组的循环中,因此性能绝对是一个考虑因素。换句话说,我不想做一堆嵌套循环来找到那个值——如果它存在的话,我正在寻找一个内置的 PHP 函数(或它们的组合)。
【问题讨论】:
-
您将不得不遍历
$arr['EE']并测试每个值是否$val['P']和$val['T']等于您期望的值,无论哪种方式。无法直接访问,除非您以这种方式重新索引数组或构建二级索引来查找直接索引。 -
这是我目前正在走的路线。你已经证实我的想法并不疯狂。