在第二级过滤多维数组
Filter multidimensional array on second level
有很多关于过滤的讨论帖,但我 google 一整天都无法正常工作。
我有一个数组,它是通过 mysqli 查询创建的。
$cat_cross =
array(2)
{ [0]=> array(3)
{ ["cat_cross_id"]=> string(2) "24"
["cat_cross_items_id"]=> string(1) "4"
["cat_cross_user_id"]=> string(2) "58"
}
[1]=> array(3)
{ ["cat_cross_id"]=> string(2) "25"
["cat_cross_items_id"]=> string(1) "6"
["cat_cross_user_id"]=> string(2) "58"
}
}
现在我只想查询 "cat_cross_items_id" 的值,因为稍后我需要用它在 if 子句中将它与另一个变量进行比较。
我试过这个:
$allowed = array("cat_cross_items_id");
var_dump(array_intersect_key($cat_cross, array_flip($allowed)));
我认为这适用于数组的第一级,但我如何过滤第二级?
期望结果:
$new_arr = array(4,6)
非常感谢!
PHP >= 5.5.0:
$new_arr = array_column($cat_cross, "cat_cross_items_id");
PHP >= 5.3.0:
$new_arr = array_map(function($v) { return $v["cat_cross_items_id"]; }, $cat_cross);
较早的版本将需要循环或在 array_map()
中调用外部函数。
有很多关于过滤的讨论帖,但我 google 一整天都无法正常工作。
我有一个数组,它是通过 mysqli 查询创建的。
$cat_cross =
array(2)
{ [0]=> array(3)
{ ["cat_cross_id"]=> string(2) "24"
["cat_cross_items_id"]=> string(1) "4"
["cat_cross_user_id"]=> string(2) "58"
}
[1]=> array(3)
{ ["cat_cross_id"]=> string(2) "25"
["cat_cross_items_id"]=> string(1) "6"
["cat_cross_user_id"]=> string(2) "58"
}
}
现在我只想查询 "cat_cross_items_id" 的值,因为稍后我需要用它在 if 子句中将它与另一个变量进行比较。
我试过这个:
$allowed = array("cat_cross_items_id");
var_dump(array_intersect_key($cat_cross, array_flip($allowed)));
我认为这适用于数组的第一级,但我如何过滤第二级?
期望结果:
$new_arr = array(4,6)
非常感谢!
PHP >= 5.5.0:
$new_arr = array_column($cat_cross, "cat_cross_items_id");
PHP >= 5.3.0:
$new_arr = array_map(function($v) { return $v["cat_cross_items_id"]; }, $cat_cross);
较早的版本将需要循环或在 array_map()
中调用外部函数。