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 fetch all the names belongs to that ...
i know it can be a really dumb question, but people sometime get stuck on a really basic problem. Hope someone knows the answer.
<?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';
$pluck = 'name';
var_dump( array_reduce($data['CATEGORY 1'], function($result, $array) use ( $pluck ) {
isset($array[$pluck]) && $result[] = $array[$pluck];
return $result;
}, array()));
Simply use foreach
like as
$result = [];
foreach($data as $value){
foreach($value as $k => $v){
if($v['category'] == 'CATEGORY1')
$result[] = $v['name'];
}
}
print_r($result);
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.