过去一天我一直试图让这个工作,没有运气。最后,我做了一个坏的黑客,并希望如何正确。
我需要找到具有以下结构的数组搜索的关键
(
[2] => Array
(
[0] => Array
(
[total] => 52
[date] => 2017-02-08
[nickname] => AAAA
)
[1] => Array
(
[total] => 53
[date] => 2017-02-09
[nickname] => AAAA
)
)
[3] => Array
(
[8] => Array
(
[total] => 11
[date] => 2017-02-08
[nickname] => XXXX
)
[9] => Array
(
[total] => 14
[date] => 2017-02-09
[nickname] => XXXX
)
)
)
我需要按日期搜索数组中的每个数组,因为我使用以下代码
$key = array_search($value, array_column($sales, 'date'));
哪个进入foreach
循环大数组。
问题我有$key
而不是返回我的ID似乎是让我回到原位。例如,对于$value = '2017-02-09'
,它总是会返回1
而不是1
和9
仅仅因为我不理解array_seach是如何工作的,或者由于1
foreach
有任何方法>
任何有正确方向的小贴士都会受到赞赏,
答案 0 :(得分:2)
您可以使用嵌套循环将与日期值匹配的所有键附加到数组中。
foreach ($your_array as $set) {
foreach ($set as $key => $item) {
if ($item['date'] == $value) $keys[] = $key;
}
}
对于您的示例数组,这将导致$keys = [1, 9]
。
答案 1 :(得分:1)
array_search - 在数组中搜索给定值并返回 第一个对应的密钥,如果成功
使用The RecursiveIteratorIterator class的解决方案:
const swap = (arr, a, b)=> { arr[b] = [arr[a], arr[a] = arr[b]][0]; return arr; }