I have an array which contains some data. for example:
$data = array(
'CATEGORY 1' => array(
array('id'=> 0, 'name' => 'John', 'category' => 'CATEGORY1'),
array('id'=> 1, 'name' => 'Jack', 'category' => 'CATEGORY1'),
array('id'=> 2, 'name' => 'Jame', 'category' => 'CATEGORY1'),
),
'CATEGORY 2' => array(
array('id'=> 0, 'name' => 'Mile', 'category' => 'CATEGORY2'),
array('id'=> 1, 'name' => 'Mike', 'category' => 'CATEGORY2'),
array('id'=> 2, 'name' => 'Matt', 'category' => 'CATEGORY2'),
)
);
Now how can I write a function like this:
if ($post ='CATEGORY 1') {
// filter all the name where category => CATEGORY1
}
Expected output:
['John', 'Jack', 'Jame']
I have tried like so:
$filters = array(
"id" => array(
"filter" => FILTER_VALIDATE_INT,
"flags" => FILTER_FORCE_ARRAY,
"options" => array(
"min_range" => 1,
"max_range" => 120
)
),
"name" => array(
"filter" => FILTER_CALLBACK,
"options" => "ucwords"
),
"category" => array(
"filter" => FILTER_CALLBACK,
"options" => "ucwords"
)
);
print_r(filter_var_array($data, $filters));
But that returns me null. How can I search within the array with the condition where category is category1 and fetch all the names which belongs to that?
foreachloop$data['CATEGORY 1']targets the sub array.array_column()can isolate the name values.