我在key => value
对
$all_categories = array (
1 => 'friends',
2 => 'family',
3 => 'personal',
4 => 'public'
);
我有这样的新小数组,只有values
。
$searched_categories = array('family','public');
现在我如何从$all_categories
数组获取值为$searched_categories
的数据?
我想要这样的输出
$output_array = array(2,4);
我可以使用array_search
获取单个密钥但是有预建功能吗?或者我必须创建一个循环到array_search
我拥有的所有值?
这是实现这个目标的正确方法吗?
$output_array = array ();
foreach ($searched_categories as $value){
$key = array_search($value, $all_categories );
$output_array = $key;
}
答案 0 :(得分:4)
$all_categories = array (1 => 'friends', 2 => 'family', 3 => 'personal', 4 => 'public');
$searched_categories = array('family','public');
$output_array = array_keys(
array_intersect(
$all_categories,
$searched_categories
)
);
var_dump($output_array);
答案 1 :(得分:0)
您可以使用foreach循环和in_array
。
foreach($all_categories as $key => $category){ //loop through your categories array
if(in_array($category, $searched_categories)){ //check if category is in searched_catgories
$output_array[] = $key; //if category is there, then save the key to your new array
}
}
print_r($output_array);
会给你Array ( [0] => 2 [1] => 4 )
答案 2 :(得分:0)
array_search
正在执行此任务,但是您一直擦除数组并添加$ key,无论它是否与array_search中的false相等:
foreach ($searched_categories as $value){
$key = array_search($value, $all_categories );
if ($key !== false)
$output_array[] = $key;
}