[英]extracting key from given array with “value”
我们有一个看起来像这样的数组
<?php
$list = array(
'liquid'=>array('water','soft drink'),
'solid'=>array('car','computer','floor'),
'gas'=>array('air','oxygen','carbon dioxide'),
);
?>
现在这只是一个示例列表,我们正在努力实现的目标
用户在这样的函数中传递值
<?php
function return_state($matter_value){
return array_search($matter_value, $list);
}
?>
water
,结果应该是液体 floor
结果应该是可靠的 简而言之,无论用户传递什么,它都将返回与之关联的密钥
但是当我们执行这个函数时,它返回''(空值)。
我们做错了什么?
只需使用in_array
进行foreach
循环就可以轻松实现。
$list = array(
'liquid'=>array('water','soft drink'),
'solid'=>array('car','computer','floor'),
'gas'=>array('air','oxygen','carbon dioxide'),
);
function return_state($matter_value, $list){
foreach($list as $key => $val){
if(in_array($matter_value, $val))
return $key;
}
return 'Not found.';
}
echo return_state('floor', $list); //solid
通过函数调用传递数组。
使用foreach
循环和in_array
函数:
function return_state($matter_value = ""){
$list = [
'liquid' => ['water','soft drink'],
'solid' => ['car','computer','floor'],
'gas' => ['air','oxygen','carbon dioxide'],
];
if (!empty($matter_value)) { // avoids empty arguments
foreach ($list as $key => $items) {
if (in_array($matter_value, $items)) {
return $key;
}
}
}
return false;
}
print_r(return_state("water")); // "liquid"
print_r(return_state("floor")); // "solid"
array_search
无法在内部数组中找到。 它将查看主阵列,即液体,固体,气体及其值(不是数组)。 你需要循环通过主数组的键来搜索键。
<?php
function return_state($matter_value,$list){
foreach($list as $key=>$item){
$test=array_search($matter_value, $item);
if($test!==FALSE){
return $key;
}
}
}
?>
这是问题的另一种解决方案。 它使matter_value成为一个数组,并与$ list数组的每个元素相交。 如果没有匹配,则结果为null 。
function return_state($matter_value, $list) {
foreach ($list as $list_item_key => $list_item) {
if ( ! empty(array_intersect([$matter_value], array_values($list_item)))) {
return $list_item_key;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.