我有一个包含一些数据的数组。例如---
$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'),
)
);
现在我怎么写这样的函数---
if ($post ='CATEGORY 1') {
// filter all the name where category => CATEGORY1
}
expected output --
'John', 'Jack', 'Jame';
我试过这样---
$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));
但是我返回null,如何在数组中搜索类别为category1的条件,获取所有名称属于那个...
我知道这可能是一个非常愚蠢的问题,但人们有时会陷入一个非常基本的问题。 希望有人知道答案。
答案 0 :(得分:2)
<?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()));
答案 1 :(得分:2)
只需使用foreach
,如
$result = [];
foreach($data as $value){
foreach($value as $k => $v){
if($v['category'] == 'CATEGORY1')
$result[] = $v['name'];
}
}
print_r($result);
答案 2 :(得分:1)
Bellow代码将帮助您
<?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获取实时输出