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?
Bellow code will help you out
<?php
$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'),
)
);
$post='CATEGORY 1';
$elements=$data[$post];
$names=array();
foreach ($elements as $ele) {
$names[]=$ele['name'];
}
print_r($names);
click here get realtime output