以下是我使用的数组结构
$arr = Array (
[0] => Array
(
[Research] => '#00c0ef' ,
[class_name] => box-info
)
[1] => Array
(
[Review] => '#00a65a' ,
[class_name] => box-success
)
[2] => Array
(
[Case Study] => '#3c8dbc',
[class_name] => box-primary
)
);
我想获取'#3c8dbc'的密钥,这意味着我将获得案例研究的输出。
下面的代码是对此更好的解决方案吗?
$search_value = '#3c8dbc';
$selected_array = array_filter(array_map(function ($ar) use
($search_value) {return array_search($search_value,$ar);}, $userdb));
$selected_item = reset($selected_array);
The $selected_item will print the key of value '#3c8dbc' .
**Output : Case Study**
答案 0 :(得分:0)
$signal = false;
for($i = 0, $l = count($userdb); $i < $l; $i++) {
$subarray = $userdb[$i];
foreach ($subarray as $index => $value) {
if ($value === $myValue) {
$key = $index;
$signal = true;
break;
}
}
if ($signal) { break; }
}
if (isset($key)) {
var_dump($key); // key name of the subarray
var_dump($userdb[$i]); // full subarray. $i containing the index of it in $userdb
}
这应该可以解决问题。
我使用for循环遍历每个元素,因此可以将有趣的索引保留在循环末尾。找到元素后,我离开循环。希望对您有帮助
编辑(特定于问题中显示的数组)
// $myValue contains the input you have
if (gettype($myvalue) === "integer") {
$key = "uid";
} else {
if (preg_match("/^urlof/", $myValue)) {
$key = "url";
} else {
$key = "name";
}
}