使用PHP

时间:2017-02-15 20:11:34

标签: php arrays multidimensional-array

过去一天我一直试图让这个工作,没有运气。最后,我做了一个坏的黑客,并希望如何正确。

我需要找到具有以下结构的数组搜索的关键

(
    [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而不是19

仅仅因为我不理解array_seach是如何工作的,或者由于1 9和foreach有任何方法>

任何有正确方向的小贴士都会受到赞赏,

2 个答案:

答案 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; }