搜索子数组并获取父数组的索引

时间:2018-04-22 13:09:29

标签: php arrays

我有一个如下数组:

Array
(
    [sku_code_part] => Array
        (
            [1] => Array
                (
                    [id] => 1
                    [name] => Category
                    [sku_code_type] => 1
                )

            [2] => Array
                (
                    [id] => 2
                    [name] => -
                    [sku_code_type] => 4
                )

            [3] => Array
                (
                    [id] => 2
                    [name] => -
                    [sku_code_type] => 7
                )

        )

我尝试使用search_array()查找sku_code_type = 7并返回其父键3;但是,search_array只返回值的键而不是它的父数组的索引。

对此最好的选择是什么?

我正在考虑在数组中循环,但我不确定从性能的角度来看这是否会过度。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用array_filter,然后使用结果中的array_keys将所有匹配的键重新放回数组中。

$result = array_filter($this->request->post['sku_code_part'], function($value, $key){
    return $value["sku_code_type"] === 7;
}, ARRAY_FILTER_USE_BOTH);

print_r(array_keys($result));

或者根据建议使用带有$key$value

的foreach
foreach ($this->request->post['sku_code_part'] as $key => $value) {
    if ($value["sku_code_type"] === 7) {
        echo "sku_code_type: 7, parent key: $key\n";
    }
}

Demo