我试图让多维数组的索引嵌套阵列中的所有列。例:
$array =
[
"int" => [80,85,66],
"text" => [57,58],
"varchar" => [82,72,70],
"decimal" => [60,61]
];
我想搜索在PHP(combinated)功能从标识获取类型是这样的:
61与58回“文本”回归“十进制”(指数)
但是,只有与阵列PHP核心功能相结合,而无需对循环
我不太清楚你想要什么,但你可以检查此解决方案:
<?php
$array =
[
"int" => [80,85,66],
"text" => [57,58],
"varchar" => [82,72,70],
"decimal" => [60,61]
];
getTypeFromId(61, $array);
function getTypeFromId($index, $array) {
foreach ($array as $k => $v) {
if (in_array($index, $v)) {
echo "With " . $index . " return " . $k;
}
}
}
结果:
With 61 return decimal
参照从PHP文件link评论。
$array =
[
"int" => [80,85,66],
"text" => [57,58],
"varchar" => [82,72,70],
"decimal" => [60,61]
];
function recursive_array_search($needle,$haystack) {
foreach($haystack as $key=>$value) {
$current_key=$key;
if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
return $current_key;
}
}
return false;
}
echo recursive_array_search(61,$array); // decimal
echo recursive_array_search(58,$array); // text
在这里,我们过滤原始阵列包含只包含想要的数字阵列。然后,我们只是得到一个剩余元的密钥。 (假设所有的号是唯一的。)
<?php
$array =
[
"int" => [80,85,66],
"text" => [57,58],
"varchar" => [82,72,70],
"decimal" => [60,61]
];
$target = 70;
$filtered = array_filter($array, function($v) use ($target) {
return in_array($target, $v);
});
echo key($filtered);
输出:
varchar
如果你不反对的foreach,你可以遍历您的阵列,每个子阵列,直到你匹配您的项目。
<?php
$array =
[
"int" => [80,85,66],
"text" => [57,58],
"varchar" => [82,72,70],
"decimal" => [60,61]
];
function find_type($needle, $array)
{
foreach($array as $type => $sub)
foreach($sub as $int)
if($int == $needle) return $type;
}
echo find_type(60, $array);
输出:
decimal